赞
踩
❤️ 以下分别介绍这四种效果的实现方式,非常简单!
首先:table绑定点击行事件 @row-click="rowClick"
绑定复选框勾选事件 @select="handleSelectionChange"
- <el-table
- ref="Table"
- :data="tableData"
- style="width: 100%"
- :select-on-indeterminate="false"
- @select="handleSelectionChange"
- @row-click="rowClick"
- >
- //......
1、点击行多选
- rowClick(row, column, event) { // 点击行多选
- // console.log(row)
- // 从已选中数据中 判断当前点击的是否被选中
- const selected = this.multipleSelection.some(item => item.id === row.id) // 是取消选择还是选中
- if (!selected) { // 不包含 代表选择
- this.multipleSelection.push(row)
- this.$refs['multipleTable'].toggleRowSelection(row, true);
- } else { // 取消选择
- var finalArr = this.multipleSelection.filter((item) => {
- return item.id !== row.id
- })
- this.multipleSelection = finalArr // 取消后剩余选中的
-
- this.$refs['multipleTable'].toggleRowSelection(row, false);
- }
- console.log('更改选择后', this.multipleSelection)
- },
2、点击行单选
- rowClick(row, column, event) {
- // console.log(row)
- // 选已选中数据中判断当前点击的是否被选中
- if (this.multipleSelection[0] == row) { // 选中的是已有的 取消选中
- this.multipleSelection = [];
- this.$refs['Table'].clearSelection();
- } else {
- this.multipleSelection = [row];
- this.$refs['Table'].clearSelection();
- this.$refs['Table'].toggleRowSelection(row, true);
- }
- },
3、table复选框单选 点击复选框单选效果 记录选中数据
- handleSelectionChange(selection, row) {
- if (this.multipleSelection[0] == row) {
- this.multipleSelection = [];
- this.$refs['Table'].clearSelection();
- } else {
- this.multipleSelection = [row];
- this.$refs['Table'].clearSelection();
- this.$refs['Table'].toggleRowSelection(row, true);
- }
- },
4、table复选框多选 点击复选框多选效果 记录选中数据
- selectChange(selection, row) {
- // console.log('手动勾选数据行', selection, row)
- // 判断当前行是否选中
- const selected = selection.some(item => item === row) // 是取消选择还是选中
- if (selected) { // 选择
- this.multipleSelection.push(row)
- } else { // 取消选择
- var finalArr = this.multipleSelection.filter((item) => {
- return item.id !== row.id
- })
- this.multipleSelection = finalArr
- }
- console.log('更改选择后', this.multipleSelection)
- },
如果还涉及到复选框默认勾选,默认禁用等效果。
可查看我的上篇笔记~