Пользовательские фильтры - это внешние фильтры, реализованные потребителем пакета.Однако они могут быть встроены в таблицу вместо текстового фильтра с использованием слотов (см. Документацию Slots
).
Поскольку фильтр является внешним по отношению к пакету, вы отвечаете засообщите пакету, когда он изменился, используя шину событий или Vuex.
Другими словами, единственным интерфейсом между пакетом и пользовательским фильтром является событие.Пакет не знает и не контролирует, когда или при каких обстоятельствах событие происходит.Он пассивно прослушивает изменение и объединяет полученный запрос с собственным.
Например, допустим, вы написали компонент age-range-filter
, который генерирует событие changed
, и вы хотите, чтобы он заменилage
собственный текстовый фильтр столбца:
<v-server-table ... :columns="['name','age']" :options="tableOptions">
<div slot="filter__age">
<age-range-filter @changed="filter"></age-range-filter>
</div>
</v-server-table>
В вашем экземпляре vue:
data:{
tableOptions:{
filterable:['name'] // omit 'age' as it will be replaced by your component
customFilters:['age-range']
}
},
methods:{
filter(query) {
VueEvent.$emit('age-range', query);
}
}