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 相关文章推荐
javascript 装载iframe子页面,自适应高度
Mar 20 Javascript
关于javascript中的typeof和instanceof介绍
Dec 04 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
Jan 11 Javascript
JSF中confirm弹出框的用法示例介绍
Jan 07 Javascript
jQuery瀑布流插件Wookmark使用实例
Apr 02 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
Mar 03 Javascript
JavaScript中的立即执行函数表达式介绍
Mar 15 Javascript
浅谈js 闭包引起的内存泄露问题
Jun 22 Javascript
浅谈javascript:两种注释,声明变量,定义函数
Oct 05 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
Jun 11 Javascript
简单了解JavaScript弹窗实现代码
May 07 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 xml文件操作实现代码(二)
2009/03/20 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
浅谈React组件之性能优化
2018/03/02 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
python实现黑客字幕雨效果
2018/06/21 Python
python中的tcp示例详解
2018/12/09 Python
总结python中pass的作用
2019/02/27 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
python 动态绘制爱心的示例
2020/09/27 Python
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
工程移交协议书
2016/03/24 职场文书
2021年最新用于图像处理的Python库总结
2021/06/15 Python
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL