Vue 3.X 表格组件el-table初始化时保持多选框的选中

        父页面调用子组件时,传入el-table中应当选中的值列表,但在使用toggleRowSelection时触发两次selection-change事件,无法正确显示。

        可以看到打印了两次selection。

         解决方法:el-table标签需要包含row-key、reserve-selection属性

<el-table @row-click="clickRow" 
    ref="refTable" 
    :reserve-selection="true" 
    :row-key="getRowKey" 
    :data="userList"
    @selection-change="handleSelectionChange" height="260px"
>
    <el-table-column type="selection" width="55"></el-table-column>        
</el-table>

        在script里使用nextTick

      props.ids.forEach(id => {
         nextTick(() => {
            userList.value.forEach(row => {
               if (row.userName == id.userName) {
                  proxy.$refs["refTable"].toggleRowSelection(row, true);
               }
            })
         });
      });

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue 2中,使用Element UI的el-table组件内嵌el-select是可以实现的。根据引用内容提供的链接,你可以参考以下步骤来实现el-table内嵌el-select并实现编辑和刷新视图的功能: 1. 首先,确保你已经正确引入VueElement UI库,并在Vue实例中注册el-tableel-select组件。 2. 在el-table的列定义中,使用scoped slot来定义el-select的显示和编辑模式。 ```html <el-table :data="tableData"> <el-table-column label="姓名" prop="name"> <template slot-scope="scope"> <el-select v-model="scope.row.name" placeholder="请选择"> <el-option label="选项1" value="option1"></el-option> <el-option label="选项2" value="option2"></el-option> <el-option label="选项3" value="option3"></el-option> </el-select> </template> </el-table-column> </el-table> ``` 3. 在Vue实例中,定义tableData数组作为el-table的数据源,并初始化数据。 ```javascript new Vue({ el: '#app', data() { return { tableData: [ { name: '张三' }, { name: '李四' }, { name: '王五' } ] }; } }); ``` 4. 现在,当你在el-select中选择一个选项,对应行的name属性会自动更新。同el-table会自动刷新视图以反映更改的数据。 ```html <div id="app"> <el-table :data="tableData"> <el-table-column label="姓名" prop="name"> <template slot-scope="scope"> <el-select v-model="scope.row.name" placeholder="请选择"> <el-option label="选项1" value="option1"></el-option> <el-option label="选项2" value="option2"></el-option> <el-option label="选项3" value="option3"></el-option> </el-select> </template> </el-table-column> </el-table> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="https://unpkg.com/element-ui/lib/index.js"></script> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <script> new Vue({ el: '#app', data() { return { tableData: [ { name: '张三' }, { name: '李四' }, { name: '王五' } ] }; } }); </script> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值