javascript类库:element ui table 增加筛选的方法示例
	2018-11-27 10:47
	
互联网
		
	文章主要介绍了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
- },
以上就是本文的全部内容,希望对大家的学习有所帮助。