Element+Vue实现表格全局筛选功能详解
创作时间:
作者:
@小白创作中心
Element+Vue实现表格全局筛选功能详解
引用
CSDN
1.
https://blog.csdn.net/weixin_43671292/article/details/141823818
在使用Element UI和Vue开发项目时,如何实现表格的全局筛选功能是一个常见的需求。本文将详细介绍如何在分页的情况下实现表格的筛选功能,确保筛选效果能够应用于所有页面,而不仅仅是当前页面。
表格部分代码
在表格组件中,需要监听filter-change
事件,并在数据渲染时使用filteredData
进行分页处理。
<el-table
:data="
filteredData.slice((currentPage - 1) * pageSize, currentPage * pageSize)
"
@filter-change="filterChange"
>
<el-table-column
prop="regionId"
label="宿舍区域"
:filters="regionIdOptions"
column-key="regionId"
>
<template v-slot="{ row }">
{{ row.region }}
</template>
</el-table-column>
<el-table-column
label="房间性别"
:filters="[
{ text: '女', value: 2 },
{ text: '男', value: 1 },
{ text: '夫妻', value: 3 },
]"
prop="workerGender"
column-key="workerGender"
><template v-slot="{ row }">
<el-tag :type="workerGenderType(row.workerGender)">{{
workerGenderShow(row.workerGender)
}}</el-tag>
</template>
</el-table-column>
//其他内容
</el-table>
获取表格数据
通过inquire
方法获取表格数据,并将原始数据存储在tableData
中,筛选后的数据存储在filteredData
中。
inquire() {
getRequest(this.baseUrl, '你的数据接口')
.then((res) => {
if (res.status == 200) {
this.tableData = res.data.objects
this.filteredData = this.tableData //用于筛选的表格数据
}
})
.catch(function (error) {
console.log(error)
})
},
记录筛选参数
定义filterProps
对象来记录筛选参数,注意要与表格列的column-key
保持一致。
filterProps: {
workerGender: [1, 2, 3],
regionId: [1, 2],
},
筛选处理
在filterChange
方法中处理筛选逻辑,根据筛选条件更新filteredData
。
filterChange(filterObj) {
//宿舍区域
if (filterObj.regionId) {
if (filterObj.regionId.length > 0) {
this.filterProps.regionId = filterObj.regionId
} else {
this.filterProps.regionId=[1,2]
}
}
//房间性别
if (filterObj.workerGender) {
if (filterObj.workerGender.length > 0) {
this.filterProps.workerGender = filterObj.workerGender
} else {
this.filterProps.workerGender = [1, 2, 3]
}
}
//过滤数据,根据多个筛选条件对数组进行筛选
this.filteredData = this.tableData.filter(
(item) =>
this.filterProps.workerGender.includes(item.workerGender) &&
this.filterProps.regionId.includes(item.regionId)
)
},
分页处理
确保分页组件的总条数根据筛选后的数据长度进行更新。
<el-pagination
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
layout="total, prev, pager, next, jumper"
:total="filteredData.length"
>
</el-pagination>
热门推荐
解读!上海市慢行交通标志标线设置技术指南(试行)发布
弥陀寺:石柱山下的千年古刹
双十一买买买,这些化学知识让你更懂行
点亮传统 玩转创意:沂水如意社区元宵节亲子灯笼DIY活动来啦!
艾德·卡特姆:皮克斯创意管理33条原则
约翰·拉塞特:皮克斯动画帝国的创意法则
元宵节必看:《地久天长》温暖你我
清华大学艺术博物馆元宵节夜场活动全攻略:三场舞蹈表演+延时开放至21点
厦门集美元宵节:灯火璀璨映夜空,两岸同胞共庆团圆
西南地区旅游攻略:从九寨沟到丽江古城,一场说走就走的奇幻之旅
探秘新疆打开旅游新视角
第59届超级碗前瞻:新奥尔良的荣耀时刻
超级碗引爆拉斯维加斯经济狂潮!
泰勒·斯威夫特与Usher引爆超级碗!堪萨斯城酋长队实现三连冠壮举
易经怎么学才能从新手到精通
中国古代十二时辰制度详解:与现代24小时制的对照及文化内涵
北京协和医院创新应用声音识别技术,智能语音助手助力超声检查效率提升
生脉饮:中医益气养阴的重要方剂
小米摄像头连不上Wi-Fi?速看!
家用监控摄像头:如何避免隐私泄露?
衢州至张家界芙蓉镇美食攻略:三头一掌、土家三下锅、苗家酸汤鱼
文化之旅:深度探寻,与当地风土人情的不解之缘
湖南必去自驾游路线大全(8条精华线路任你选)
孔雀鱼生小鱼要单独捞出吗?孔雀鱼育苗的正确方法
孔雀鱼饲养指南!
拥抱巴黎:一份实用的生活指南
永葆天真护童心——“笨狼”三十周岁成长记
走向儿童文学的星辰大海
如何撰写述职报告并突出工作亮点?
关秀敏:一个名字背后的文化密码