javascript - 如何使用 Fuse.js 过滤 vuetify v-autocomplete 组件中的数据?
问题描述
我在我的应用程序中使用 vuetify自动完成组件。在这个组件中可以使用自定义过滤器来过滤输入数据。这是自动完成的示例过滤器:
customFilter (item, queryText, itemText) {
const textOne = item.name.toLowerCase()
const textTwo = item.abbr.toLowerCase()
const searchText = queryText.toLowerCase()
return textOne.indexOf(searchText) > -1 ||
textTwo.indexOf(searchText) > -1
}
如何在 vuetify 自动完成组件中使用Fuse.js库正确过滤对象数组?
我试过什么?
这是我的自定义过滤器
filter(item, queryText, itemText) {
let fuseOptions = {
include: ["score", "matches"],
shouldSort: true,
threshold: 0.5,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
keys: [
"name",
"description",
"coordinates"
]
};
let fuseResults = new Fuse(this.items, fuseOptions).search(
queryText
);
for (var i = fuseResults.length - 1; i >= 0; i--) {
return fuseResults[i].item.coordinates === item.coordinates
}
}
这是自动完成组件:
<v-autocomplete
v-model="model"
:items="items"
:loading="loading"
:search-input.sync="search"
color="dark"
hide-no-data
cache-items
item-text="name"
label="Autocomplete"
placeholder="Search items"
prepend-icon="mdi-database-search"
return-object
:filter="filter"
></v-autocomplete>
当我尝试这个自动完成不会返回 Fuse.js 的过滤结果
解决方案
filter
为每个单独的项目而不是整个集合调用该函数。如果您想过滤整个集合而不检查单个项目,我建议:items
您在查询更改时更改其属性的值。
<v-autocomplete
v-model="model"
:items="getItems"
:search-input.sync="searchInput"
<!-- ... -->
></v-autocomplete>
export default {
data() {
return {
searchInput: ""
}
}
computed: {
getItems() {
let fuseOptions = {
include: ["score", "matches"],
shouldSort: true,
threshold: 0.5,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
keys: [
"name",
"description",
"coordinates"
]
};
return new Fuse(this.items, fuseOptions).search(this.searchInput);
}
}
}
推荐阅读
- c# - 如何在 Visual Studio 中使用 LINQPad 脚本?
- python - 有人可以帮我将其格式化为电话号码的形式:000-000-0000
- python - 为什么我在 AlienInvasion.py 上收到 NameError
- javascript - whatsapp的简单发送表格
- kubernetes - Kubernetes 部署终止最旧的 Pod
- python - Python - 如何在 selenium 中的选项卡之间切换
- gitlab - Gitlab:如何在 GitLab 11.x 上批量修改项目和组的可见性?
- php - GuzzleHttp 在生产和 localhost 中具有不同的标头
- python - ValueError:尝试使用 Cloud Functions 中的字典更新 Firestore 文档时,一个或多个组件不是字符串或为空
- datetime - 在 Kotlin 中将 ISO 8601 持续时间转换为人类可读的文本