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 26 Javascript
JavaScript 基础篇(一)
Mar 30 Javascript
javascript的创建多行字符串的7种方法
Apr 29 Javascript
如何获取网站icon有哪些可行的方法
Jun 05 Javascript
JQuery页面地址处理插件jqURL详解
May 03 Javascript
JavaScript SHA1加密算法实现详细代码
Oct 06 Javascript
element-ui 上传图片后清空图片显示的实例
Sep 04 Javascript
vue使用axios上传文件(FormData)的方法
Apr 14 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
Jul 27 Javascript
JavaScript实现图片合成下载的示例
Nov 19 Javascript
Vue 事件的$event参数=事件的值案例
Jan 29 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
深入HTTP响应状态码速查表的详解
2013/06/07 PHP
php反射应用示例
2014/02/25 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
初识Node.js
2015/03/20 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
详解Python Socket网络编程
2016/01/05 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
django中send_mail功能实现详解
2018/02/06 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
python mysql中in参数化说明
2020/06/05 Python
PHP面试题附答案
2015/11/28 面试题
统计每一学生的平均成绩
2014/06/06 面试题
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
Delphi CS笔试题
2014/01/04 面试题
质检部岗位职责
2013/11/11 职场文书
校园报刊亭创业计划书
2014/01/02 职场文书
家长学校实施方案
2014/03/15 职场文书
应急管理培训方案
2014/06/12 职场文书
电子专业自荐信
2014/07/01 职场文书
教师个人事迹材料
2014/12/17 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
小学运动会加油稿
2015/07/22 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL