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>
热门推荐
广州到深圳15分钟!“地上飞机”高速磁悬浮来了,哪些城市受益?
生肖起名法,根据属相挑选最佳宝宝名字
从五行“金、木、水、火、土”的命名,看五行的特性。
未熟韭菜食用安全隐患全解析
韭菜喜阴还是喜阳的植物?种植技巧是什么?
单位保密工作要求有哪些
增肌一周训练计划:健身锻炼+饮食方案+高效减脂
数据分析在审计中的应用研究
投资重庆,为什么行?
水果降价背后:产业竞争逻辑正在重塑
300度近视眼和正常眼应如何配眼镜
如何选择优质的民宿居住体验?这种体验的关键因素有哪些?
利息计算规则详解:从法律视角解析利息计算方法
电子产品质保期法律规定及常见问题解析
疫苗接种应该注射多少毫升?
运用中性色打造现代简约风格:两个实景案例
中国电影票房地图:你的家乡最爱看什么电影?
医学微生物学流程
怎么算投标保证金
如何解决车窗无法升降的问题?车窗升降系统的常见故障有哪些?
胃食管反流病科普:症状、原因、诊断与治疗全解析
探索九江:不可错过的十大热门景点与必体验的文化地标
比PUA更可怕!这样的“迷之自恋”,可能是种病!
这些“神药”为何被限制使用?医生提醒:危害不容忽视
守株待兔告诉我们什么道理 故事概述
一个人在广州注册公司需要多少钱
新股申购时间要求及规则详解
怎么能测出皮质醇高
怎么判断皮质醇水平
嘴唇一圈有灼烧感怎么办?原因分析与应对措施