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 的addEventListener()及attachEvent()区别分析
May 21 Javascript
Jquery中使用setInterval和setTimeout的方法
Apr 08 Javascript
js函数内变量的作用域分析
Jan 12 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
js模仿java的Map集合详解
Jan 06 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
Mar 09 Javascript
BootStrap导航栏问题记录
Jul 31 Javascript
JS获取url参数,JS发送json格式的POST请求方法
Mar 29 Javascript
vuex 动态注册方法 registerModule的实现
Jul 03 Javascript
js中的this的指向问题详解
Aug 29 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
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
浅谈angular2 组件的生命周期钩子
2017/08/12 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
咖啡店自主创业商业计划书
2014/01/22 职场文书
服装发布会策划方案
2014/05/22 职场文书
党员证明模板
2015/06/19 职场文书
Python实现简繁体转换
2021/06/07 Python
python 判断文件或文件夹是否存在
2022/03/18 Python