赞
踩
最终效果, 保留复选框的同时 去掉 全选复选框
需求: 只做单选操作, 且选中数据需要使用整个 Object 对象数据。考虑过checked模拟, 但是感觉太麻烦 ( 懒 )。
选择使用table的原因, 即便是绑定整个对象 只要指定row-key即可保证回填
<template> <el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" :header-cell-class-name="headerCell" style="width: 100%"> <el-table-column type="selection" width="55"> </el-table-column> <el-table-column label="日期" width="120"> <template slot-scope="scope">{{ scope.row.date }}</template> </el-table-column> <el-table-column prop="name" label="姓名" width="120"> </el-table-column> <el-table-column prop="address" label="地址" show-overflow-tooltip> </el-table-column> </el-table> <div style="margin-top: 20px"> <el-button @click="toggleSelection([tableData[1], tableData[2]])">切换第二、第三行的选中状态</el-button> <el-button @click="toggleSelection()">取消选择</el-button> </div> </template> <script> export default { data() { return { tableData: [{ date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-08', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-06', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-07', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }], multipleSelection: [] } }, methods: { /** * 通过el-table的 header-cell-class-name 回调 */ headerCell(row){ const isDelCheckedAll = true; // 可以设置 props 传递变量 if (isShowSelectAll && (row.columnIndex === 0 && row.rowIndex === 0)) { this.removeCheckedAllDom(row); } }, removeCheckedAllDom(row){ this.$nextTick(() => { // 每次触发 headerCell 判断如果是第一个 单元格 调用该方法 // row.column.id 是该单元格的 class 样式 // 通过 class 样式连续找两层 children 节点 如果存在 执行 remove() var selectBox = document.querySelector(`.${row.column.id}`); selectBox.children[0].children[0]?.remove(); }) } } </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。