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中各字符串出现次数的工具
May 03 Javascript
js返回上一页并刷新的多种实现方法
Feb 26 Javascript
在Ubuntu上安装最新版本的Node.js
Jul 14 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
Jul 13 Javascript
深入浅出webpack之externals的使用
Dec 04 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
Promise.all中对于reject的处理方法
Aug 01 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
May 24 Javascript
关于vue组件事件属性穿透详解
Oct 28 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 jQuery
vue实现简单加法计算器
Oct 22 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
jquery简单体验
2007/01/10 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
python实现比较两段文本不同之处的方法
2015/05/30 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
中医药大学市场营销专业自荐信
2013/09/29 职场文书
暑假家长评语大全
2014/04/17 职场文书
名人演讲稿范文
2014/09/16 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
高考学习决心书
2015/02/04 职场文书
趣味运动会新闻稿
2015/07/17 职场文书
学校运动会感想
2015/08/10 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
Go本地测试解耦任务拆解及沟通详解Go本地测试的思路沟通的重要性总结
2022/06/21 Golang