element-UI中table组件使用时结合CheckBox

17 篇文章 0 订阅
7 篇文章 0 订阅

在使用element-UI组件时,尤其是各种后台管理软件用到的尤其多。

在用table组件时,我结合了checkBox来进行多选,用来传递多组数组。

但是我在载入页面时使用过一次,用来显示已经勾选过的选项(从后端传的数据),然后用

rows.forEach(row => {
            this.$refs.multipleTable.toggleRowSelection(row);
          });

来进行反选选项

handleSelectionChange(val) {
        this.multipleSelection = val;
      }

用这个来执行CheckBox被选中时操作,记录我所要的id,
此时我遇到一个问题,就是数据和方法都已经被执行,但是选项没有被勾选,我对两个方法都进行了排查,发现每次进行反选都会执行一次选中操作。但是反选只执行了2次,而选中操作执行了3次。我发现最后一次选中操作,会将已经选中的数据全部清空。

解决方案:
对反选操作进行延时执行,我才是每次加载table组件时CheckBox全部都会被置空,而反选操作延时执行则会避免这个问题

setTimeout(()=>{
                        this.meter_list.forEach(row => {
                            if (row.authState == '1'){
                                this.$refs.multipleTable.toggleRowSelection(row);
                            }
                        });
                    },1000)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UITable多选组件,选择父级和子级一起选择可以通过自定义的方式实现。 首先,我们需要在数据源增加一个字段用于标识是否选,例如使用"checked"字段,默认为false表示未选。 然后,我们需要编写一个方法,在用户选择父级,将其下所有子级都设置为选状态。同样,在用户取消选择父级,将其下所有子级都设置为未选状态。可以通过递归的方式实现这个功能。 最后,我们需要在Table组件的多选列,将checkbox的选状态与数据源的"checked"字段进行绑定,以实现联动效果。 具体代码如下: template: ``` <template> <el-table :data="tableData" style="width: 100%"> <el-table-column type="selection" :selectable="customSelectable"></el-table-column> <!-- 其他列 --> </el-table> </template> ``` script: ``` <script> export default { data() { return { tableData: [ { name: '父级1', children: [ { name: '子级1', checked: false }, { name: '子级2', checked: false }, ], checked: false }, { name: '父级2', children: [ { name: '子级3', checked: false }, { name: '子级4', checked: false }, ], checked: false } ] }; }, methods: { customSelectable(row, index) { return row.checked; }, handleSelectAll(selection) { selection.forEach(item => { if (item.children) { item.checked = true; this.setChildrenChecked(item.children, true); } }); }, handleSelectionChange(selection) { selection.forEach(item => { if (!item.children) { item.checked = selection.length > 0; } }); }, setChildrenChecked(children, checked) { children.forEach(child => { child.checked = checked; if (child.children) { this.setChildrenChecked(child.children, checked); } }); } } }; </script> ``` 以上代码演示了如何实现在Element UITable多选组件选择父级和子级一起选择的功能。当用户选择父级,其下的所有子级都会被选;当用户取消选择父级,其下的所有子级都会被取消选
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值