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
      }
      },
相关推荐
运维全栈笔记20 分钟前
Vue + Spring Boot 前后端分离项目部署笔记(若依 RuoYi-Vue 3.9.2)
运维·服务器·vue.js·spring boot·笔记·开源·开源软件
ly76896 小时前
HTML5 从入门到工程实践:语义化、表单、多媒体、性能与项目规范详解
前端·html·html5
人民广场吃泡面10 小时前
前端该重视的编程思想
前端
冬夜戏雪10 小时前
agent的trace 和eval
开发语言·前端·javascript
IT_陈寒10 小时前
Redis的DEL命令居然没删干净数据?这个坑我爬了半天
前端·人工智能·后端
kyriewen10 小时前
面试官让我现场用 AI 改一个真实 bug——他打断我的 3 个理由
前端·面试·ai编程
计算机魔术师11 小时前
斯坦福研究:AI 对入门级岗位冲击最大
前端
感谢一路走过的人11 小时前
AGGrid刷新数据后执行筛选
javascript·ag-grid