如何显示包含 vue.js 中对象的数据数组?
How to display an array of data containing objects in vue.js?
我的 vue 组件是这样的:
<template>
...
<ul v-if="!selected && keyword">
<li v-for="state in filteredStates" @click="select(state.name)">{{ state.name }}</li>
</ul>
...
</template>
<script>
export default {
...
computed: {
filteredStates() {
const data = this.$store.dispatch('getProducts', {
q: this.keyword
})
data.then((response) => {
console.log(response.data)
return response.data
})
}
}
}
</script>
console.log(response.data) 的结果是这样的:
我想像上图那样显示数组数据。但它不显示值。也许我在vue组件中的循环还是错误的
我该如何解决这个问题?
filteredStates
执行异步 API 请求,你不能在计算 属性 中执行此操作(事实上,你不会从 属性 反正没用)。
您应该将 filteredStates
设为数据 属性,然后观察对 keyword
的更改,然后更新 filteredStates
作为响应。
类似于:
data() {
return {
filteredStates: []
}
},
watch: {
keyword(value) {
this.$store.dispatch('getProducts', { q: value })
.then(res => {
this.filteredStates = res.data;
})
}
}
我的 vue 组件是这样的:
<template>
...
<ul v-if="!selected && keyword">
<li v-for="state in filteredStates" @click="select(state.name)">{{ state.name }}</li>
</ul>
...
</template>
<script>
export default {
...
computed: {
filteredStates() {
const data = this.$store.dispatch('getProducts', {
q: this.keyword
})
data.then((response) => {
console.log(response.data)
return response.data
})
}
}
}
</script>
console.log(response.data) 的结果是这样的:
我想像上图那样显示数组数据。但它不显示值。也许我在vue组件中的循环还是错误的
我该如何解决这个问题?
filteredStates
执行异步 API 请求,你不能在计算 属性 中执行此操作(事实上,你不会从 属性 反正没用)。
您应该将 filteredStates
设为数据 属性,然后观察对 keyword
的更改,然后更新 filteredStates
作为响应。
类似于:
data() {
return {
filteredStates: []
}
},
watch: {
keyword(value) {
this.$store.dispatch('getProducts', { q: value })
.then(res => {
this.filteredStates = res.data;
})
}
}