实现原理
监听手动勾选数据行的 Checkbox时触发的select事件,根据参数 rows 和 row 计算出勾选操作为选中还是取消选中。
- rows —— 所有选中行组成的数组
- row —— 勾选行的数据
核心代码
@select="select"
select(rows, row) { // true为选中, 0或false为取消选中 this.selected = rows.length && rows.indexOf(row) !== -1; },
完整范例
<template> <div class="mainBox"> <el-table ref="multipleTable" :data="tableData" @select="select"> <el-table-column type="selection" width="55" align="center"> </el-table-column> <el-table-column prop="name" label="姓名" align="center"> </el-table-column> <el-table-column prop="age" label="年龄" align="center"> </el-table-column> </el-table> <p v-if="selected !== null"> 当前操作为:{{ selected ? "选中行" : "取消选中" }} </p> </div> </template> <script> export default { data() { return { selected: null, tableData: [ { name: "王小虎", age: 10, }, { name: "张三", age: 20, }, { name: "李四", age: 30, }, ], }; }, methods: { select(rows, row) { // true为选中, 0或false为取消选中 this.selected = rows.length && rows.indexOf(row) !== -1; }, }, }; </script> <style scoped> .mainBox { margin: 30px; } </style>