elementul el-table表格如何在取消勾选时获取当前行数据

本文介绍了解决在Vue的el-table组件中,如何在用户取消勾选时获取当前行数据的问题。通过`handleSelect`方法利用includes()判断并获取未勾选项的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些时候需要用到在取消勾选时获取当前行的数据,但是正常的用法你取消后返回给你的是一个空数组。

解决办法

这里我就直接把elementul上的多选表格代码直接复制过来演示了。如果想要看看效果,可以直接复制这一段代码找个空白的页面放进去看看log的信息就知道了。

老规矩,解释一下,防止新人看不懂:

这里主要是靠在el-table上用@select="handleSelect"方法实现的
下面handleSelect方法中,list参数代表所有勾选数据,item参数代表当前点击的数据。
arguments是一个类数组对象,如果不理解,具体说明自己百度看看这是个啥,这可是很好用的。
includes() 方法用于判断字符串是否包含指定的子字符串。
如果找到匹配的字符串则返回 true,否则返回 false

逻辑

上面解释完了,应该也理解逻辑了吧
很简单,就是通过includes()判断所以勾选的数据内是否包含当前点击的项,如果没有就返回false。那你已经取消勾选了自然就不包含,就是false。那就if判断一下,如果是false也就是你取消勾选了就把当前的数据存到某个变量之类的,你就拿到了数据了。这个可以用item拿也可以直接arguments[1]也能拿到

<template>
  <div>
      <el-table
    ref="multipleTable"
    :data="tableData"
    tooltip-effect="dark"
    style="width: 100%"
    @select="handleSelect">
    <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>
</template>

<script>
export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-03',
          name: '王小虎1',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-02',
          name: '王小虎2',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎3',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎4',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-08',
          name: '王小虎5',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-06',
          name: '王小虎6',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-07',
          name: '王小虎7',
          address: '上海市普陀区金沙江路 1518 弄'
        }],
        multipleSelection: []
      }
    },

    methods: {
   		//这个不用管
      toggleSelection(rows) {
        if (rows) {
          rows.forEach(row => {
            this.$refs.multipleTable.toggleRowSelection(row);
          });
        } else {
          this.$refs.multipleTable.clearSelection();
        }
      },
      
      //重点是这个方法。list是所有勾选数据,item是当前点击的数据。
      handleSelect(list, item){
          if(list.includes(item)){
              //勾选时做的事
              console.log('成功');
          }else{
              //取消勾选时做的事,arguments[1]是当前取消勾选的项
              console.log(arguments[1]);
          }
            console.log('handleSelect', arguments,list.includes(item))
        },
    }
}
</script>

<style>

</style>
### 如何在Element UI的`el-table`组件中获取勾选数据Element UI中的`el-table`组件里,通过设置特定的方法可以轻松获取用户所勾选数据。当表格支持多选,通常会有一个处理函数用于监听选择变化事件,并将选定的数据存储起来。 对于捕获这些已选项目而言,在JavaScript方法内部定义了一个名为`handleSelectionChange`的功能[^2]: ```javascript // 定义一个Vue实例或组件内的methods选项 methods: { handleSelectionChange(selection) { this.selectedRows = selection; } } ``` 此段代码的作用在于每当用户的选取发生改变——无论是新增还是取消某些行的选择——都会触发该回调函数并将最新的全部选中项作为参数传递进来。这里假设`this.selectedRows`是一个数组类型的响应式属性,用来保存当前已被标记出来的记录列表。 为了让上述逻辑生效,还需要确保`<el-table>`标签上绑定了这个处理器以及启用了多选模式。下面给出了一段完整的HTML模板片段示例[^3]: ```html <template> <div> <!-- 表格 --> <el-table :data="tableData" @selection-change="handleSelectionChange"> <!-- 复选框列 --> <el-table-column type="selection"></el-table-column> <!-- 其他常规显示数据的列... --> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> <!-- 显示已选条目数量或其他操作按钮 --> <p>共选择了 {{ selectedRows.length }} 条</p> <!-- 更多功能区,比如导出按钮等 ... --> </div> </template> ``` 这段代码展示了如何配置一个带有复选框的表格,并且能够实更新页面上的提示信息以反映最新状态。值得注意的是,除了简单的计数之外,还可以基于`selectedRows`执行更多复杂的操作,例如批量删除、编辑或是像提到的一样将其导出为文件等功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

接口写好了吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值