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 相关文章推荐
Extjs优化(二)Form表单提交通用实现
Apr 15 Javascript
Javascript中 关于prototype属性实现继承的原理图
Apr 16 Javascript
原生js封装二级城市下拉列表的实现代码
Jun 16 Javascript
深入理解(function(){... })();
Aug 16 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
Aug 29 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
Jul 21 Javascript
JS和JQuery实现雪花飘落效果
Nov 30 jQuery
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
Jul 20 Javascript
Jquery Fade用法详解
Nov 06 jQuery
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
虫族 Zerg 热键控制
2020/03/14 星际争霸
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
php解析xml方法实例详解
2015/05/12 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
JS重要知识点小结
2011/11/06 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
python中的字典详细介绍
2014/09/18 Python
浅谈django中的认证与登录
2016/10/31 Python
python用户管理系统的实例讲解
2017/12/23 Python
pytorch 模型可视化的例子
2019/08/17 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
视光学专业自荐信
2014/06/24 职场文书
教师继续教育反思周记
2015/06/25 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
python区块链持久化和命令行接口实现简版
2022/05/25 Python
讨论nginx location 顺序问题
2022/05/30 Servers