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
      }
      },
相关推荐
fury_1235 小时前
vue3:触发自动el-input输入框焦点
javascript·vue.js·elementui
小桥风满袖5 小时前
极简三分钟ES6 - 迭代器Iterator
前端·javascript
小菜全5 小时前
ElementUI 组件概览
前端·vue.js·elementui
Developer-YC5 小时前
像素图生成小程序开发全解析:从图片上传到Excel图纸
java·javascript·图像处理·微信小程序·excel
lichong9515 小时前
【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之android 把assert里的dist.zip 包解压到sd卡里
android·vue.js·iphone
JarvanMo5 小时前
提升生产力:每个 iOS 开发者都应该知道的 10 个 Xcode 技巧
前端
玲小珑5 小时前
LangChain.js 完全开发手册(七)RAG(检索增强生成)架构设计与实现
前端·langchain·ai编程
前端小巷子5 小时前
原生 JS 打造三级联动
前端·javascript·面试
江城开朗的豌豆6 小时前
useEffect vs componentDidUpdate:谁才是真正的更新之王?
前端·javascript·react.js