这篇文章主要为大家详细介绍了element ui table 增加筛选的方法示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
网上大部分都可以增加筛选功能,但没有找到下列这种情况。
若表头数据较多,而表头是自己通过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
},
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持四海网。
本文来自:http://www.q1010.com/184/6640-0.html
注:关于element ui table 增加筛选的方法示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:vue.js
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。