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 16 Javascript
jquery+php实现搜索框自动提示
Nov 28 Javascript
JavaScript控制table某列不显示的方法
Mar 16 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
EasyUI布局 高度自适应
Jun 04 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
Jan 20 Javascript
javascript简单写的判断电话号码实例
May 24 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
Vue实现todolist删除功能
Jun 26 Javascript
jQuery实现基本动画效果的方法详解
Sep 06 jQuery
小程序实现日历左右滑动效果
Oct 21 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中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
php实现简单文件下载的方法
2015/01/30 PHP
php实现通用的信用卡验证类
2015/03/24 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
js 金额文本框实现代码
2012/02/14 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python基于socket实现网络广播的方法
2015/04/29 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
在python中安装basemap的教程
2018/09/20 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
Jupyter Notebook折叠输出的内容实例
2020/04/22 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
超市开学活动方案
2014/03/01 职场文书
工程承诺书怎么写
2014/05/24 职场文书
小学开学标语
2014/07/01 职场文书
学校政风行风整改方案
2014/10/25 职场文书
挂靠协议书
2015/01/27 职场文书
单位收入证明范本
2015/06/18 职场文书
感恩教师节主题班会
2015/08/12 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python