el-table表头做过滤

实现一个 el-table 表头做过滤功能
  1. 需求:el-table 表头做过滤功能,根据选择的值返回对应的表格数据

  2. 实现步骤:

    html 复制代码
    <el-table :data="tableData">
      <el-table-column type="selection"></el-table-column>
      <el-table-column type="index" label="序号"></el-table-column>
      <el-table-column
        label="姓名"
        prop="name"
        column-key="name"
        :filters="getFilterOptions(tableData, 'name')"
        :filter-method="filterHandler"
      ></el-table-column>
      <el-table-column
        label="年龄"
        prop="age"
        column-key="age"
        :filters="getFilterOptions(tableData, 'age')"
        :filter-method="filterHandler"
      ></el-table-column>
      <el-table-column
        label="地址"
        prop="address"
        column-key="address"
        :filters="getFilterOptions(tableData, 'address')"
        :filter-method="filterHandler"
      ></el-table-column>
      <el-table-column
        label="时间"
        prop="endTime"
        column-key="endTime"
        :filters="getFilterOptions(tableData, 'endTime')"
        :filter-method="filterHandler"
      ></el-table-column>
    </el-table>
    • js 部分

      javascript 复制代码
      data() {
      return {
       tableData: [
         { name: '张三', age: 18, address: '北京', endTime: '2021-01-01' },
         { name: '张三11', age: 18, address: '北京33', endTime: '2021-01-01' },
         { name: '李四', age: 20, address: '上海', endTime: '2021-02-01' },
         { name: '王五', age: 22, address: '广州', endTime: '2021-03-01' },
         { name: '赵六', age: 24, address: '深圳', endTime: '2021-04-01' },
         { name: '钱七', age: 26, address: '杭州', endTime: '2021-05-01' },
         { name: '孙八', age: 28, address: '成都', endTime: '2021-06-01' },
         { name: '周九', age: 30, address: '武汉', endTime: '2021-07-01' },
         { name: '吴十', age: 32, address: '南京', endTime: '2021-08-01' },
         { name: '郑十一', age: 34, address: '重庆', endTime: '2021-09-01' },
         { name: '王十二', age: 36, address: '西安', endTime: '2021-10-01' },
       ],
       timeFilterOptions: []
      }
      },
      methods: {
      filterHandler(value, row, column) {
       const property = column['property'];
       return row[property] === value;
      },
      getFilterOptions(dataList, key) {
       const filterList = []
       dataList.map(item => {
         if (item[key]) {
           filterList.push(item[key])
         }
       })
       let filterOptions = Array.from(new Set(filterList))
       filterOptions = filterOptions.map(item => {
         return {
           text: item,
           value: item
         }
       })
       return filterOptions
      }
      },
相关推荐
king王一帅10 分钟前
Incremark Solid 版本上线:Vue/React/Svelte/Solid 四大框架,统一体验
前端·javascript·人工智能
智航GIS5 小时前
10.4 Selenium:Web 自动化测试框架
前端·python·selenium·测试工具
前端工作日常5 小时前
我学习到的A2UI概念
前端
徐同保5 小时前
为什么修改 .gitignore 后还能提交
前端
一只小bit5 小时前
Qt 常用控件详解:按钮类 / 显示类 / 输入类属性、信号与实战示例
前端·c++·qt·gui
Mr -老鬼6 小时前
前端静态路由与动态路由:全维度总结与实践指南
前端
Nan_Shu_6146 小时前
学习: Threejs (1)
javascript·学习
颜酱7 小时前
前端必备动态规划的10道经典题目
前端·后端·算法
wen__xvn7 小时前
代码随想录算法训练营DAY10第五章 栈与队列part01
java·前端·算法
Van_Moonlight7 小时前
RN for OpenHarmony 实战 TodoList 项目:加载状态 Loading
javascript·开源·harmonyos