el-table多选回显以及避免重复选择问题

<template>
   
      <el-table
        height="450px"
        ref="tableList"
        :data="dataList"
        stripe
        :row-key="getRowKeys"
        @selection-change="handleSelectionChange"
      >
        <el-table-column :reserve-selection="true" type="selection" width="55"> </el-table-column>
     </el-table>
</template>
 
<script>
data(){
  return{
    dataList: [], 
    selectList :[],
    choosePeople, //多选内容
    rowSelectFlag : false,
    getRowKeys(row){
       return  row.id
      }
     },
},
methods:{
  //回显的时候默认选中
    showCheck() {
      setTimeout(() => {
        this.rowSelectFlag = true
        this.selectList = this.personList // 父组件传的值
        this.dataList.forEach(row => {
          const matchedIndex = this.selectList.findIndex(item => item.userId == row.userId)
          this.$refs['tableList'].toggleRowSelection(row, matchedIndex != -1)
        })
        this.rowSelectFlag = false
      }, 0);

    },
   // 选择数据时触发
   handleSelectionChange(val) {
      if (this.rowSelectFlag) return
      this.selectList = val
    },
  }
 
</script>
 

注意: :row-key=“getRowKeys” 和 reserve-selection="true"是必须的,
设置rowSelectFlag避免重复选择

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值