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电信网通双线自动选择技巧
Nov 18 Javascript
Node.js复制文件的方法示例
Dec 29 Javascript
设置cookie指定时间失效(实例代码)
May 28 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
Jul 13 Javascript
JavaScrip数组删除特定元素的几种方法总结
Sep 06 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
Angular4 反向代理Details实践
May 30 Javascript
vue实现简单loading进度条
Jun 06 Javascript
js form表单input框限制20个字符,10个汉字代码实例
Apr 12 Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 Javascript
Vue toFixed保留两位小数的3种方式
Oct 23 Javascript
vue封装数字翻牌器
Apr 20 Vue.js
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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php 中文处理函数集合
2008/08/27 PHP
php下图片文字混合水印与缩略图实现代码
2009/12/11 PHP
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
PHP中strtotime函数使用方法分享
2012/01/10 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
js树形控件脚本代码
2008/07/24 Javascript
JS去除右边逗号的简单方法
2013/07/03 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
Python的ORM框架SQLObject入门实例
2014/04/28 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
python实现横向拼接图片
2020/03/23 Python
flask项目集成swagger的方法
2020/12/09 Python
python文件路径操作方法总结
2020/12/21 Python
建筑设计专业求职自我评价
2014/03/02 职场文书
办公设备采购方案
2014/03/16 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
医院财务人员岗位职责
2015/04/14 职场文书