element ui table 增加篩選的方法示例
網(wǎng)上大部分都可以增加篩選功能,但沒有找到下列這種情況。
若表頭數(shù)據(jù)較多,而表頭是自己通過v-for循環(huán)產(chǎn)生,這種情況怎么給虛擬dom添加篩選規(guī)則。
<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循環(huán)遍歷出來的數(shù)據(jù)
如何添加規(guī)則內(nèi)容
首先,element提供了filters,filter-method兩個(gè)屬性,一個(gè)是寫規(guī)則的內(nèi)容,一個(gè)是寫的方法。
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: []}
]
只需要在要添加規(guī)則的上面加上filter這個(gè)key值。
filter里面的內(nèi)容要按照element ui 上面的格式塞進(jìn)去
:filters="[{ text: '家', value: '家' }, { text: '公司', value: '公司' }]"
所以只能用方法來找到相應(yīng)的id然后再處理。
let filterList = this.tableHead.filter(i => i.id === '1')[0].filter
規(guī)則的內(nèi)容是和列表內(nèi)容有關(guān)系,而一般情況下列表的內(nèi)容也是從后端數(shù)據(jù)拿到的。所以要對規(guī)則的內(nèi)容進(jìn)行處理。
this.tableData.forEach((item) => {
filterList.push({
text: item.xxx, value: item.yyy
})
})
這樣操作肯定會有重復(fù)的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
},
得到最終的規(guī)則內(nèi)容:
filterList = this.uniqArrObject(filterList)
規(guī)則方法
filterHandler (value, row, column) {
const property = column['property']
return row[property] === value || row[property].value === value
},
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue3實(shí)現(xiàn)動態(tài)側(cè)邊菜單欄的幾種方式簡單總結(jié)
在做開發(fā)中都會遇到的需求,每個(gè)用戶的權(quán)限是不一樣的,那他可以訪問的頁面(路由)可以操作的菜單選項(xiàng)是不一樣的,如果由后端控制,我們前端需要去實(shí)現(xiàn)動態(tài)路由,動態(tài)渲染側(cè)邊菜單欄,這篇文章主要給大家介紹了關(guān)于vue3實(shí)現(xiàn)動態(tài)側(cè)邊菜單欄的幾種方式,需要的朋友可以參考下2024-02-02
使用vue-cli導(dǎo)入Element UI組件的方法
這篇文章給大家介紹了使用vue-cli導(dǎo)入Element UI組件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友一起看看吧2018-05-05

