vue3 elementplus el-table toggleRowSelection使用方法

基础使用步骤

设置表格与引用 :在你的模板中,为 el-table 设置 ref,并确保已包含 type="selection" 的列

html 复制代码
<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange">
  <el-table-column type="selection" width="55" />
  <!-- 其他列 -->
</el-table>

操作选中状态 :通过 ref 获取表格实例,并调用 toggleRowSelection 方法

javascript 复制代码
// 在脚本中
import { ref } from 'vue';

const multipleTableRef = ref(); // 获取表格的ref

// 切换某一行的选中状态(不传第二个参数,则自动切换)
const toggleRow = (row) => {
  multipleTableRef.value.toggleRowSelection(row);
};

// 明确设置某一行为选中状态
const selectRow = (row) => {
  multipleTableRef.value.toggleRowSelection(row, true);
};

// 明确取消某一行的选中状态
const deselectRow = (row) => {
  multipleTableRef.value.toggleRowSelection(row, false);
};

应用场景

单击行选中 :结合 el-tablerow-click 事件,实现点击表格行即可选中或取消选中该行

html 复制代码
<el-table 
  ref="multipleTableRef" 
  :data="tableData" 
  @row-click="handleRowClick"
>
  <!-- 表格列 -->
</el-table>
javascript 复制代码
const handleRowClick = (row) => {
  // 点击行时,切换该行的选中状态
  multipleTableRef.value.toggleRowSelection(row);
};

设置默认选中 :当数据加载后,例如从接口获取到 tableData,你可以在下一个 DOM 更新周期后,通过 toggleRowSelection 设置某些行默认选中

javascript 复制代码
import { nextTick } from 'vue';

// 假设从接口获取了数据
tableData.value = await fetchData();

nextTick(() => {
  // 遍历数据,对符合条件(例如 item.condition 为 true)的行设置选中
  tableData.value.forEach(item => {
    if (item.condition) {
      multipleTableRef.value.toggleRowSelection(item, true);
    }
  });
});
  • 注意 :使用 nextTick 确保 DOM 已更新 ,从而能正确设置选中状态-8

  • 实现反选功能:遍历所有表格数据,切换每一行的选中状态

javascript 复制代码
const invertSelection = () => {
  tableData.value.forEach(item => {
    // 获取当前行的选中状态可能需要你自己维护,或通过 selection-change 事件获取的数组判断
    // 这里是一个简化的例子:直接切换当前状态
    multipleTableRef.value.toggleRowSelection(item);
  });
};

实现单选功能 :在 @selection-change 事件中,确保只保留最新选中的一行
*

javascript 复制代码
const handleSelectionChange = (val) => {
  // 如果选中了多行,取消之前所有行的选中,只保留最后一行
  if (val.length > 1) {
    const lastSelectedRow = val[val.length - 1];
    // 取消所有行的选中状态
    multipleTableRef.value.clearSelection();
    // 重新设置最后一行为选中状态
    multipleTableRef.value.toggleRowSelection(lastSelectedRow, true);
  }
};
相关推荐
wuhen_n26 分钟前
网络请求在Vite层的代理与Mock:告别跨域和后端依赖
前端·javascript·vue.js
小彭努力中26 分钟前
193.Vue3 + OpenLayers 实战:圆孔相机模型推算卫星拍摄区域
vue.js·数码相机·vue·openlayers·geojson
踩着两条虫8 小时前
VTJ.PRO 核心架构全公开!从设计稿到代码,揭秘AI智能体如何“听懂人话”
前端·vue.js·ai编程
用头发抵命9 小时前
Vue 3 中优雅地集成 Video.js 播放器:从组件封装到功能定制
开发语言·javascript·ecmascript
蓝冰凌10 小时前
Vue 3 中 defineExpose 的行为【defineExpose暴露ref变量】详解:自动解包、响应性与实际使用
前端·javascript·vue.js
奔跑的呱呱牛10 小时前
generate-route-vue基于文件系统的 Vue Router 动态路由生成工具
前端·javascript·vue.js
sp42a10 小时前
在 NativeScript-Vue 中实现流畅的共享元素转场动画
vue.js·nativescript·app 开发
柳杉10 小时前
从动漫水面到赛博飞船:这位开发者的Three.js作品太惊艳了
前端·javascript·数据可视化
TON_G-T11 小时前
day.js和 Moment.js
开发语言·javascript·ecmascript