element怎么找到取消勾选的行数据呢?

思否 问答 👍 3 含 AI 优化版

问题

element怎么找到取消勾选的行数据呢?

在 SegmentFault 查看原问题 →

由大模型辅助整理,保留原意,优化结构与可读性。

问题概述

提问者在使用 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-tableselect 事件在单击某一行的选择框时触发,回调会同时提供「当前所有已选中的行」和「本次被点击的那一行」,通过判断这一行是否还存在于当前选中列表中,就能区分是勾选还是取消勾选。

示例代码

<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-tableselect 事件回调参数含义是:

  • 第一个参数(selection):触发事件后,表格当前所有已勾选的行组成的数组。
  • 第二个参数(row):本次被单击操作(勾选或取消勾选)的那一行数据。

因此只需要判断 selection.includes(row):如果结果为 true,说明这一行刚被勾选进 selection;如果为 false,说明这一行虽然被点击了,但已经不在 selection 里了,也就是刚被取消勾选。

小结

利用 el-tableselect 事件回调中「已选列表」与「本次操作行」两个参数做一次 includes 判断,即可准确识别出用户是勾选还是取消勾选了某一行。

由大模型辅助整理,保留原意,补充结构与代码格式。

回答转载自 SegmentFault

评论

评论功能即将开放。你也可以通过 邮件GitHub Issue 反馈。