上班接到新的任务,表格表头筛选,但是element-ui中给的事例 filter-method 为前端筛选,翻页,整体过滤都不满足,所以找到了以下方法。
filter-method: ‘数据过滤使用的方法,如果是多选的筛选项,对每一条数据会执行多次,任意一次返回 true 就会显示。’
<el-table-column
prop="date" label="日期" sortable
width="180" column-key="date"
:filters="[{text: '2016-05-01', value: '2016-05-01'}, {text: '2016-05-02', value: '2016-05-02'}, {text: '2016-05-03', value: '2016-05-03'}, {text: '2016-05-04', value: '2016-05-04'}]"
:filter-method="filterHandler">
</el-table-column>
//在methods里
filterHandler(value, row, column) {
const property = column['property'];
return row[property] === value;
}
:filter-method="dataFilter"可以自定义一个筛选条件,在dataFilter里写自己的逻辑代码,但是在console.log中打印出来,我们可以看到每次筛选都会打印出很多条数据,表格有多少条数据就会打印出多少次,说明filter-method方法会遍历每一行数据,方法里面的操作有多少条数据就会执行多少次。
filter-change:‘当表格的筛选条件发生变化的时候会触发该事件,参数的值是一个对象,对象的 key 是 column 的 columnKey,对应的 value 为用户选择的筛选条件的数组。’
<el-table @filter-change="filterChange">
</el-table>
//在methods里
filterChange (column) {
console.log(column)
}
在使用filter-change时,需要在相对应属性上标识是哪个 column 的筛选条件,从而获取columnKey值
在筛选中,我们的需求可能需要多次筛选,但是filter-change方法每次只能获取一个column对象,我们可以声明一个变量,把过滤的值存在变量里,再去调用接口。