当前位置: 首页 > article >正文

【JS】element-ui table展示勾选状态

element-ui table 我将勾选的值存在multipleSelection中,在表格更新后,再遍历,来展示勾选状态。这样可行吗?

在使用 Element UI 的 el-table 组件时,将勾选的值存储在 multipleSelection 中,然后在表格更新后通过遍历这些值来展示勾选状态,这种做法理论上是可行的,但在实际操作中有一些需要注意的地方,下面为你详细分析。

实现思路

  1. 存储勾选的值:当用户在表格中勾选行时,el-table 会触发 selection-change 事件,你可以在这个事件的处理函数中将勾选的行数据存储到 multipleSelection 数组中。
  2. 表格更新:当表格数据更新时,需要重新设置表格的勾选状态。可以通过遍历 multipleSelection 数组,使用 el-tabletoggleRowSelection 方法来设置每一行的勾选状态。

示例代码

<template>
  <div>
    <el-button @click="updateTableData">更新表格数据</el-button>
    <el-table
      ref="tableRef"
      :data="tableData"
      @selection-change="handleSelectionChange"
      style="width: 100%"
      multiple
    >
      <el-table-column type="selection" width="55"></el-table-column>
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      tableData: [
        { id: 1, name: '张三', age: 20 },
        { id: 2, name: '李四', age: 25 },
        { id: 3, name: '王五', age: 30 }
      ],
      multipleSelection: []
    };
  },
  methods: {
    handleSelectionChange(selection) {
      this.multipleSelection = selection;
    },
    updateTableData() {
      // 模拟表格数据更新
      this.tableData = [
        { id: 1, name: '张三', age: 20 },
        { id: 2, name: '李四', age: 25 },
        { id: 3, name: '王五', age: 30 },
        { id: 4, name: '赵六', age: 35 }
      ];
      // 重新设置勾选状态
      this.$nextTick(() => {
        this.multipleSelection.forEach(item => {
          const targetRow = this.tableData.find(row => row.id === item.id);
          if (targetRow) {
            this.$refs.tableRef.toggleRowSelection(targetRow, true);
          }
        });
      });
    }
  }
};
</script>

代码解释

  1. handleSelectionChange 方法:当用户勾选或取消勾选表格行时,该方法会被调用,将当前勾选的行数据存储到 multipleSelection 数组中。
  2. updateTableData 方法:模拟表格数据更新,更新 tableData 数组。在数据更新后,使用 $nextTick 确保 DOM 已经更新,然后遍历 multipleSelection 数组,使用 toggleRowSelection 方法设置每一行的勾选状态。

注意事项

  • 数据唯一性:确保表格数据中的每一行都有一个唯一的标识(如示例中的 id),这样才能准确地找到需要勾选的行。
  • $nextTick 的使用:由于 Vue 的响应式原理,数据更新后 DOM 不会立即更新,因此需要使用 $nextTick 确保在 DOM 更新后再设置勾选状态。

通过以上方法,你可以在表格更新后保留之前的勾选状态。


http://www.kler.cn/a/536156.html

相关文章:

  • [Deepseek-自定义Ollama 安装路径+lmStudio 简易安装]
  • MLA 架构
  • el-table中的某个字段最多显示两行,超出部分显示“...详情”,怎么办
  • ZooKeeper单节点详细部署流程
  • 【React】合成事件语法
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_sprintf_num 函数
  • AI工具——Cherry Studio,搭建满血DeepSeek R1的AI对话客户端
  • 【医院绩效管理专题】2.绩效管理:医院发展的核心驱动力
  • Jmeter接口自动化测试
  • ZIP完美解密解压缩和暴力破解最佳实现
  • python图片转字符画应用
  • Java 集合中的 `removeIf` 和 Stream API 的 `filter`
  • 4.Python字符串和列表:字符串输入、字符串输出、下标和切片、字符串常见函数、列表(list)、列表的循环遍历、列表的增删改查、列表的嵌套、列表的切片
  • 基于单片机的电子抢答器设计(论文+源码+实物)
  • Vue 3 30天精进之旅:Day 17 - 样式和动画
  • UE学习日志#24 C++笔记#10 内存管理1
  • linux——网络计算机{序列化及反序列化(JSON)(ifdef的用法)}
  • DeepSeek本地化部署
  • 【实战】excel分页写入导出大文件
  • 如何在Android Studio中开发一个简单的Android应用?
  • 【截图】selenium自动通过浏览器截取指定元素div的图片
  • 深度剖析 Redis:缓存穿透、击穿与雪崩问题及实战解决方案
  • java将list转成树结构
  • 劳务报酬所得税
  • DeepSeek辅助段落扩写的能力怎么样?
  • 【C++】C++11