element ui table 增加筛选的方法示例


Posted in Javascript onNovember 02, 2018

网上大部分都可以增加筛选功能,但没有找到下列这种情况。

若表头数据较多,而表头是自己通过v-for循环产生,这种情况怎么给虚拟dom添加筛选规则。

<el-table-column v-for="item in tableHead" :key="item.id" :prop="item.id" :label="item.label" :filters="item.filter" :filter-method="item.filter && filterHandler">

列表头是通过v-for循环遍历出来的数据

如何添加规则内容

首先,element提供了filters,filter-method两个属性,一个是写规则的内容,一个是写的方法。

this.tableHead = [
   {id: '1', label: xxx},
   {id: '2', label: xxx, filter: []},
   {id: '3', label: xxx, filter: []},
   {id: '4', label: xxx},
   {id: '5', label: xxx},
   {id: '6', label: xxx, filter: []}
  ]

只需要在要添加规则的上面加上filter这个key值。

filter里面的内容要按照element ui 上面的格式塞进去

:filters="[{ text: '家', value: '家' }, { text: '公司', value: '公司' }]"

所以只能用方法来找到相应的id然后再处理。

let filterList = this.tableHead.filter(i => i.id === '1')[0].filter

规则的内容是和列表内容有关系,而一般情况下列表的内容也是从后端数据拿到的。所以要对规则的内容进行处理。

this.tableData.forEach((item) => {
   filterList.push({
   text: item.xxx, value: item.yyy
  })
 })

这样操作肯定会有重复的text和value,所以需要去重。

去重方法:

uniqArrObject (arr) {
  let result = {}
  let finalResult = []
  for (let i = 0; i < arr.length; i++) {
   result[arr[i].text] = arr[i]
  }
  for (let key in result) {
   finalResult.push(result[key])
  }
  return finalResult
 },

得到最终的规则内容:

filterList = this.uniqArrObject(filterList)

规则方法

filterHandler (value, row, column) {
  const property = column['property']
  return row[property] === value || row[property].value === value
},

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js函数在frame中的相互调用详解
Mar 03 Javascript
超级简单实现JavaScript MVC 样式框架
Mar 24 Javascript
详解javascript数组去重问题
Nov 06 Javascript
三个js循环的关键字示例(for与while)
Feb 16 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
Sep 19 Javascript
一个炫酷的Bootstrap导航菜单
Dec 28 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
Mar 14 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
JavaScript实现学生在线做题计时器功能
Dec 05 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 Javascript
javascrpt密码强度校验函数详解
Mar 18 Javascript
vue中destroyed方法的使用说明
Jul 21 Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 #Javascript
详解使用element-ui table组件的筛选功能的一个小坑
Nov 02 #Javascript
如何使用vuex实现兄弟组件通信
Nov 02 #Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
Nov 02 #Javascript
vue头部导航动态点击处理方法
Nov 02 #Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 #Javascript
vue单页面实现当前页面刷新或跳转时提示保存
Nov 02 #Javascript
You might like
简单的PHP图片上传程序
2008/03/27 PHP
PHP一些常用的正则表达式字符的一些转换
2008/07/29 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
先进工作者获奖感言
2014/02/08 职场文书
教师业务培训方案
2014/05/01 职场文书
酒店员工培训方案
2014/06/02 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
入党现实表现材料
2014/12/23 职场文书
Python基础学习之奇异的GUI对话框
2021/05/27 Python
Pillow图像处理库安装及使用
2022/04/12 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang