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 迁移目录
Dec 18 Javascript
如何实现textarea里的不同文本显示不同颜色
Jan 20 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
javascript倒计时效果实现
Nov 12 Javascript
基于javascript实现页面加载loading效果
Sep 15 Javascript
php 解压zip压缩包内容到指定目录的实例
Jan 23 Javascript
JavaScript继承与多继承实例分析
May 26 Javascript
TypeScript中使用getElementXXX()的示例代码
Sep 12 Javascript
javascript实现动态时钟的启动和停止
Jul 29 Javascript
vue父子组件的通信方法(实例详解)
Nov 10 Javascript
Vue scoped及deep使用方法解析
Aug 01 Javascript
详解Vue中Axios封装API接口的思路及方法
Oct 10 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
构建简单的Webmail系统
2006/10/09 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
php读取mysql的简单实例
2014/01/15 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
layui原生表单验证的实例
2019/09/09 Javascript
python集合类型用法分析
2015/04/08 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
python基于event实现线程间通信控制
2020/01/13 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
电大学习个人自我评价范文
2013/10/04 职场文书
英文自我鉴定
2013/12/10 职场文书
土木工程专业个人求职信
2013/12/30 职场文书
警察思想汇报
2014/01/04 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
Oracle 死锁的检测查询及处理
2021/09/25 Oracle