根据v-data-table 中自定义过滤器的 Vuetify 文档,可以通过在标题项上提供过滤器属性来自定义对特定表列的过滤。
在我的应用程序中,我想使用它来自定义单个列的过滤。对于所有其他列,我想保留默认的字符串匹配行为。
作为一个起点(参见 codepen),我提供了一个自定义过滤器,它只返回true:
new Vue({
el: '#app',
vuetify: new Vuetify(),
data(){
return {
headers: [
{
text: 'Car Manufacturers',
value: 'car',
filter(){ return true }
},
{
text: 'Country of Origin',
value: 'country'
}
],
items: [
{ car: 'Honda', country: 'Japan' },
{ car: 'Audi', country: 'Germany' },
{ car: 'Ford', country: 'USA' }
],
search: ''
}
},
})
和
<div id="app">
<v-app>
<v-container>
<v-text-field
label="Search"
v-model="search"
>
</v-text-field>
<v-data-table
:headers="headers"
:items="items"
:search="search"
>
</v-data-table>
</v-container>
</v-app>
</div>
我现在已经预料到,无论我输入什么搜索字符串,car列上的过滤器都会匹配所有行,因此会显示整个表格。
我观察到的是,该表仍被过滤,但仅按country列。
相反,当我将过滤器更改为返回false时,会显示一个空表。然后我会预料到,该表仅按country列过滤。
标题过滤器是如何应用的?或者,更准确地说:
对于每一行,如何组合各个列过滤器的结果以产生整行的过滤器结果?