最近公司项目中有这样的需求,就是在el-table的表头中加入一个类似下拉框的筛选功能,如图所示:。
最开始的想法是使用自定义表头进行修改,后来在elementUI文档Table表格中看到有筛选的功能,在列中设置filters、filter-method属性即可开启该列的筛选,filters 是一个数组,filter-method是一个方法,它用于决定某些数据是否显示,会传入三个参数:value, row 和 column。文档中的相关代码:
但是,这样做之后就无法对所有的数据进行筛选。最终的解决方案就是将其与filter-change事件结合(该事件是写在el-table里面的),
html代码:
<el-table-column
label="类型"
prop="type"
:filter-multiple="false"
:column-key="'type'"
:filters="filterStatus"
>
</el-table-column>
js代码:
data>>>>>>>>>>>>
filterStatus: [{text: '安全目标', value: '安全目标'}, {text: '管理内容', value: '管理内容'}],
listQuery: {
curPage: 1,
pageSize: 10,
page: 1,
type: undefined,
},
methods>>>>>>>>>>>
filterChange(filters){
if(filters.type){
this.listQuery.type = filters.type[0]
}
this.getTableInfo(); // 通过接口获取数据的方法
},
:filter-multiple="false"的目的是禁止筛选多个条件。
这样就可以实现想要的功能了