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 相关文章推荐
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
JavaScript的漂亮的代码片段
Jun 05 Javascript
将input file的选择的文件清空的两种解决方案
Oct 21 Javascript
在linux中使用包管理器安装node.js
Mar 13 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 Javascript
JavaScript判断数字是否为质数的方法汇总
Jun 02 Javascript
Bootstrap导航条的使用和理解3
Dec 14 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
Apr 13 Javascript
基于Vue的延迟加载插件vue-view-lazy
May 21 Javascript
详解VUE前端按钮权限控制
Apr 26 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
Dec 09 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 mkdir()定义和用法
2009/01/14 PHP
php删除数组元素示例分享
2014/02/17 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
Js图片点击切换轮播实现代码
2020/07/27 Javascript
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
学前班教师的自我鉴定
2013/12/05 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
2014年质检员工作总结
2014/11/18 职场文书
公务员个人总结
2015/02/12 职场文书
宿舍管理制度范本
2015/08/07 职场文书
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技