element ui table 增加筛选的方法示例
网上大部分都可以增加筛选功能,但没有找到下列这种情况。
若表头数据较多,而表头是自己通过v-for循环产生,这种情况怎么给虚拟dom添加筛选规则。
列表头是通过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里面的内容要按照elementui上面的格式塞进去
:filters="[{text:'家',value:'家'},{text:'公司',value:'公司'}]"
所以只能用方法来找到相应的id然后再处理。
letfilterList=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){ letresult={} letfinalResult=[] for(leti=0;i得到最终的规则内容:
filterList=this.uniqArrObject(filterList)规则方法
filterHandler(value,row,column){ constproperty=column['property'] returnrow[property]===value||row[property].value===value },以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。