我正在从外部API链接获取我的数据,我想过滤它们-实时搜索,所以当我键入一个字母时,包括该字母的结果将被过滤。
现在我不能这样做,当我点击我的输入时,我只是打印出所有的结果,当我试图过滤它们时,什么也没有发生。
这是我在脚本中的逻辑:
data() {
return {
result: "",
modal: false,
results: [],
filteredResults: [],
};
},
mounted() {
axios
.get("secretDataURL")
.then((response) => {
this.filteredResults = response.data;
})
.catch((error) => (this.filteredResults = console.log(error)))
.finally(() => console.log("Data successfully loaded"));
},
methods: {
filterResults() {
if (this.result.lenght == 0) {
this.filteredResults = this.results;
}
this.filteredResults = this.results.filter((result) => {
return result.toLowerCase().startsWith(this.result.toLowerCase());
});
},
setResult(result) {
this.result = result;
this.modal = false;
},
},
watch: {
state() {
this.filterResults();
},
}和我的模板
<div @click="modal = false"></div>
<input
type="text"
v-model="result"
autocomplete="off"
@input="filterResults"
@focus="modal = true"
/>
<div v-if="filteredResults && modal">
<ul>
<li
v-for="(filteredResult, index) in filteredResults"
:key="index"
@click="setResult(filteredResult)"
>
{{ filteredResult.name }}
</li>
</ul>
</div>在我的逻辑失败的地方,我该如何让它工作呢?
发布于 2021-02-24 21:39:42
你在钩子mounted中获取数据。然后就失去了它。

将this.filteredResults = response.data;更改为this.results = response.data;
https://stackoverflow.com/questions/66351622
复制相似问题