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 距离某一时间点时间是多少实现代码
Oct 14 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 Javascript
javascript操作excel生成报表示例
May 08 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
May 28 Javascript
浅析Node在构建超媒体API中的作用
Jul 30 Javascript
怎么引入(调用)一个JS文件
May 26 Javascript
详解在Angular项目中添加插件ng-bootstrap
Jul 04 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
Apr 17 Javascript
微信公众号平台接口开发 菜单管理的实现
Aug 14 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
JS中多层次排序算法的实现代码
Jan 06 Javascript
基于angular实现树形二级表格
Oct 16 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实现获取客户端IP并获取IP信息
2015/03/17 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
php中yii框架实例用法
2020/12/22 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
require.js中的define函数详解
2017/07/10 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
介绍Python中的fabs()方法的使用
2015/05/14 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
python爬虫爬取网页表格数据
2018/03/07 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
基于Python在MacOS上安装robotframework-ride
2018/12/28 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
Django密码系统实现过程详解
2019/07/19 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
python em算法的实现
2020/10/03 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
企业项目策划书
2014/01/11 职场文书
学生感冒英文请假条
2014/02/04 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
Python OpenCV形态学运算示例详解
2022/04/07 Python