让前端飞饥人谷技术博客

element ui table 增加筛选

2018-10-30  本文已影响23人  小7丁

若表头数据较多,而表头是自己通过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">

如何添加规则内容

首先,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值。

let filterList = this.tableHead.filter(i => i.id === '1')[0].filter

规则的内容是和列表内容有关系,而一般情况下列表的内容也是从后端数据拿到的。所以要对规则的内容进行处理。

this.tableData.forEach((item) => {
      filterList.push({
      text: item.xxx, value: item.yyy
    })
 })
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
},
上一篇 下一篇

猜你喜欢

热点阅读