elementPuls 表格反选实现

avatar
作者
筋斗云
阅读量:0

真的在网上搜了很多资料发现根本实现不了反选 最下面有示例
然后去看了下官网
发现官网有教你怎么选中某个值的方法 官网中的”多选
官网地址

<template>   <el-table     ref="multipleTableRef"     :data="tableData"     style="width: 100%"     @selection-change="handleSelectionChange"   >     <el-table-column type="selection" width="55" />     <el-table-column label="Date" width="120">       <template #default="scope">{{ scope.row.date }}</template>     </el-table-column>     <el-table-column property="name" label="Name" width="120" />     <el-table-column property="address" label="Address" />   </el-table>   <div style="margin-top: 20px">     <el-button @click="toggleSelection([tableData[1], tableData[2]])">       Toggle selection status of second and third rows     </el-button>     <el-button @click="toggleSelection()">Clear selection</el-button>   </div> </template>  <script lang="ts" setup> import { ref } from 'vue' import { ElTable } from 'element-plus'  interface User {   date: string   name: string   address: string }  const multipleTableRef = ref<InstanceType<typeof ElTable>>() const multipleSelection = ref<User[]>([]) const toggleSelection = (rows?: User[]) => {   if (rows) {     rows.forEach((row) => {       // TODO: improvement typing when refactor table       // eslint-disable-next-line @typescript-eslint/ban-ts-comment       // @ts-expect-error       multipleTableRef.value!.toggleRowSelection(row, undefined)     })   } else {     multipleTableRef.value!.clearSelection()   } } const handleSelectionChange = (val: User[]) => {   multipleSelection.value = val }  const tableData: User[] = [   {     date: '2016-05-03',     name: 'Tom',     address: 'No. 189, Grove St, Los Angeles',   },   {     date: '2016-05-02',     name: 'Tom',     address: 'No. 189, Grove St, Los Angeles',   },   {     date: '2016-05-04',     name: 'Tom',     address: 'No. 189, Grove St, Los Angeles',   },   {     date: '2016-05-01',     name: 'Tom',     address: 'No. 189, Grove St, Los Angeles',   },   {     date: '2016-05-08',     name: 'Tom',     address: 'No. 189, Grove St, Los Angeles',   },   {     date: '2016-05-06',     name: 'Tom',     address: 'No. 189, Grove St, Los Angeles',   },   {     date: '2016-05-07',     name: 'Tom',     address: 'No. 189, Grove St, Los Angeles',   }, ] </script> 

既然官网有办法选中某个值
那反选是不是简单了 很多
以下是个人代码
第一步 获取已选中的值 和未选中的值

<el-table     ref="multipleTableRef"     :data="tableData"     style="width: 100%"     绑定切换选中时候的数据     @selection-change="handleSelectionChange"   >      </el-table>   <div @click="invertSelection(state.noCheckList)"       style="width: 114rem;height: 35rem;border: 1rem solid #9D9D9D;border-radius: 10rem;font-size: 15rem;color: #5C6170;display: flex;align-items: center;margin: 0 20rem;cursor: pointer;">       <img style="height: 15rem;margin: 0 10rem 0 15rem;" src="../../../assets/选择-反向选择@2x.png"           alt="" srcset="">       <span>反向选择</span>   </div> <script setup> let state = reactive({ 		peopleList:[],//总数据 	    checkList: [],//选中数据数组     	noCheckList:[],//未选中数据数组 }) // 重要 获取选中未选中数据 const handleSelectionChange = (val) => {     console.log(val);     state.checkList = val     const notIncludedArray = state.peopleList.filter(item => !val.includes(item));     state.noCheckList = notIncludedArray     // console.log(notIncludedArray); } const multipleTableRef= ref() // 多选table const invertSelection = (rows) => {     // rows  需要选中的数据  直接传进 state.noCheckList 即可     multipleTableRef.value.clearSelection()  //需要先全部取消选中  再去选中刚刚未选中的数据即可     if (rows) {     rows.forEach((row) => {       multipleTableRef.value.toggleRowSelection(row, undefined)     })   } else {     multipleTableRef.value.clearSelection()   } }  </script> 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!