element怎么找到取消勾选的行数据呢?
问题
element怎么找到取消勾选的行数据呢?
由大模型辅助整理,保留原意,优化结构与可读性。
问题概述
提问者在使用 Element UI 的 el-table 多选表格时,希望获取「刚被取消勾选」的那一行数据,而不仅仅是当前所有选中的行。
涉及技术
Vue、Element UI(el-table)
期望结果
希望通过 el-table 的选择相关事件,准确判断某一行是被勾选还是被取消勾选。
回答
原始回答
正好上午写了个类似的demo。
https://www.lilnong.top/stati...
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
@select="handleSelect">
handleSelect(list, item){
console.log('handleSelect', arguments, list.includes(item))
},
handleSelect 回调第一个参数是所有选中的,第二个参数是单击的。所以判断一下是否存在即可。
AI 优化 · 回答整理
解答思路
el-table 的 select 事件在单击某一行的选择框时触发,回调会同时提供「当前所有已选中的行」和「本次被点击的那一行」,通过判断这一行是否还存在于当前选中列表中,就能区分是勾选还是取消勾选。
示例代码
<el-table
ref="multipleTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
@select="handleSelect">
</el-table>
handleSelect(selection, row) {
const isSelected = selection.includes(row);
console.log('handleSelect', selection, isSelected);
// isSelected 为 false 时,row 就是被取消勾选的那一行
}
详细说明
el-table 的 select 事件回调参数含义是:
- 第一个参数(
selection):触发事件后,表格当前所有已勾选的行组成的数组。 - 第二个参数(
row):本次被单击操作(勾选或取消勾选)的那一行数据。
因此只需要判断 selection.includes(row):如果结果为 true,说明这一行刚被勾选进 selection;如果为 false,说明这一行虽然被点击了,但已经不在 selection 里了,也就是刚被取消勾选。
小结
利用 el-table 的 select 事件回调中「已选列表」与「本次操作行」两个参数做一次 includes 判断,即可准确识别出用户是勾选还是取消勾选了某一行。
由大模型辅助整理,保留原意,补充结构与代码格式。
回答转载自 SegmentFault