【发布时间】:2020-01-13 20:13:16
【问题描述】:
我一直在努力在 VueJS 2.0 中实现搜索功能。
我正在尝试复制我在Stackoverflow 中获得的这段代码,但无法实现它。
我不知道我在哪里做错了。
结果是一个存储json数据的对象。
<template>
<section>
<b-form-input v-model="searchQuery" placeholder="Search user by full name"></b-form-input>
<div v-for="result in filteredResources" :key="result.id">
<td>{{result.LONG_D}}</td>
</div>
</section>
</template>
<script>
import axios from "axios";
export default {
data() {
return {
searchQuery: "",
results: {},
search: ""
};
},
mounted() {
this.getDiseases();
},
methods: {
getDiseases: function() {
axios
.get("http://localhost:9000/api/diseases/")
.then(response => (this.results = response.data))
.catch(error => console.log(error));
}
},
computed: {
/* Search Bar */
filteredResources() {
if (this.searchQuery) {
return this.results.filter((item) => {
return item.title.startsWith(this.searchQuery);
});
} else {
return this.results;
}
}
}
};
</script>
这是错误
TypeError: this.results.filter 不是函数
【问题讨论】:
-
你不能在一个对象上调用
.filter -
那我该怎么办?
-
Object.keys(this.results).filter((key) => this.results[key].title.startsWith(this.searchQuery))可能会起作用。 -
虽然不行
-
response.data是一个数组吗?如果是这样,请将您的results数据属性初始化为相同类型,即results: []
标签: javascript vue.js vuejs2