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 相关文章推荐
分享别人写的一个小型js框架
Aug 13 Javascript
基于jQuery实现模拟页面加载进度条
Apr 01 Javascript
javascript实现分栏显示小技巧附图
Oct 13 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
May 14 Javascript
javascript中错误使用var造成undefined
Mar 31 Javascript
使用Object.defineProperty实现简单的js双向绑定
Apr 15 Javascript
jQuery插件编写步骤详解
Jun 03 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
Jul 14 Javascript
BootStrap树状图显示功能
Nov 24 Javascript
移动端界面的适配
Jan 11 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 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类
2006/10/09 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
this和执行上下文实现代码
2010/07/01 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
JS 实现Base64编码与解码实例详解
2016/11/07 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
微信小程序 setData的使用方法详解
2017/04/20 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
介绍Python中几个常用的类方法
2015/04/08 Python
Python正则表达式使用范例分享
2016/12/04 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
美国在线工具商店:Acme Tools
2018/06/26 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
Weblogic的布署方式
2013/08/23 面试题
《陈毅探母》教学反思
2014/05/01 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
收银员岗位职责
2015/02/03 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
防溺水主题班会教案
2015/08/12 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书