element-ui 实现el-table 多选框默认选中

记录时间: 2022-08-12
先上代码实现

<template>
  <div class="test">
    <!--  <el-popover placement="bottom" width="400" trigger="click"> -->
    <el-table ref="multipleTable" :data="tableData" @selection-change="handleSelectionChange">
      <el-table-column align="center" type="selection" width="42" />
      <el-table-column width="150" property="date" label="日期"></el-table-column>
      <el-table-column width="100" property="name" label="姓名"></el-table-column>
      <el-table-column width="300" property="address" label="地址"></el-table-column>
    </el-table>
    <!-- <el-button slot="reference" > 激活</el-button> -->
    <!--  </el-popover> -->
  </div>
</template>
<script>
export default {
  data() {
    return {
      tableData: [
        {
          id: 1,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id: 2,
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id: 3,
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id: 4,
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id: 5,
          date: '2016-05-08',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id: 6,
          date: '2016-05-06',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id: 7,
          date: '2016-05-07',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }
      ],
      multipleSelection: [],
      ms: {
        id: 7,
        date: '2016-05-07',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
      }
    }
  },
  mounted() {
// 巨坑的地方,multipleTable存放的是  this.tableData 数据,必须使用 this.tableData进行遍历才行
    this.tableData.forEach(element => {
      if (element.id == 7) { this.$refs.multipleTable.toggleRowSelection(element, true); }
    });
// 当需要刷新dom的时候使用该方法,比如请求前dom已经加载,如有load状态的情况下,需要使用该形式刷新,否则无效
    this.$nextTick(function () {
      this.machineResultList.forEach(element => {
        if (element.id == 7) { this.$refs.multipleTable.toggleRowSelection(element, true); }
      });
    });
  methods: {
    handleSelectionChange(val) {
      this.multipleSelection = val;
    }
  }

}
</script>
  • 从官网抄的实例,最开始本想multipleTable存放id。一直没能实现,最后退而求其次,存放完整数据,结果发现始终无法默认显示,使用新建arrlist,或者直接存放对象,均以失败告终,最后发现必须是 tableData中的数据,推测可能遍历的是tableData,故只有tableData中的数据才能被multipleSelection 认可。
  • 刷新选择状态,其中需要注意在有load状态下,dom已经加载完成,需要使用 this.$nextTick 进行重新刷新状态
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容