elementPuls 表格反选实现
真的在网上搜了很多资料发现根本实现不了反选 最下面有示例
然后去看了下官网
发现官网有教你怎么选中某个值的方法 官网中的”多选“
官网地址
<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>
原文地址:https://blog.csdn.net/qq_45503103/article/details/140675598
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!