如何在 vue-resource 中设置数据对象,这样它就不会在控制台中出错
how to set the data object in a vue-resource such that it won't error in console
我这个周末正在学习 Vue,所以一个非常简单的问题。
我正在尝试将一些 jQuery 转换为使用 Vue 和 vue-resource。我正在取回带有物品的位置的数据。我遇到的问题是,每当我加载这个对象时,我都会收到一条错误消息,指出该位置为空(这是我将其设置在 data
中的位置)。执行此操作的正确方法是什么?我应该有一个保护语句来防止它通过项目呈现?如果它是一个位置数组,我可以设置为一个空数组但是对于单个对象,它似乎应该为空。如何最好地填充一个空数据对象通过异步调用?
const Location = {
data(){
return {location: null }
},
template: `<div>{{location.name}}
<div v-for="item in location.items">
<div>{{item.id}}</div>
</div>
</div>`,
created(){
this.fetchData();
},
methods: { fetchData(){
this.$http.get('/arc/api/v1/site_admin/locations/' + this.$route.params.id + '/dashboard').then((response) => {
console.log(response.data);
this.location = response.data.location
}).catch( error => { console.log(error); });
}
}
}
您收到的错误是由于您的模板尝试将 location
设置为 null
进行呈现,如您所述。在这些情况下,您应该使用 v-if
来告诉模板中处理填充的 location
的部分,除非设置了一个,否则它不应呈现:
<div v-if="location">
{{ location.name }}
<div v-for="item in location.items">
<div>{{ item.id }}</div>
</div>
</div>
PS: vue-resource
已经 officially marked as no longer undergoing active development。尽管使用它没有问题,但您应该考虑使用替代 AJAX 库,例如 axios,以确保您的 Vue 之旅不会过时。
我这个周末正在学习 Vue,所以一个非常简单的问题。
我正在尝试将一些 jQuery 转换为使用 Vue 和 vue-resource。我正在取回带有物品的位置的数据。我遇到的问题是,每当我加载这个对象时,我都会收到一条错误消息,指出该位置为空(这是我将其设置在 data
中的位置)。执行此操作的正确方法是什么?我应该有一个保护语句来防止它通过项目呈现?如果它是一个位置数组,我可以设置为一个空数组但是对于单个对象,它似乎应该为空。如何最好地填充一个空数据对象通过异步调用?
const Location = {
data(){
return {location: null }
},
template: `<div>{{location.name}}
<div v-for="item in location.items">
<div>{{item.id}}</div>
</div>
</div>`,
created(){
this.fetchData();
},
methods: { fetchData(){
this.$http.get('/arc/api/v1/site_admin/locations/' + this.$route.params.id + '/dashboard').then((response) => {
console.log(response.data);
this.location = response.data.location
}).catch( error => { console.log(error); });
}
}
}
您收到的错误是由于您的模板尝试将 location
设置为 null
进行呈现,如您所述。在这些情况下,您应该使用 v-if
来告诉模板中处理填充的 location
的部分,除非设置了一个,否则它不应呈现:
<div v-if="location">
{{ location.name }}
<div v-for="item in location.items">
<div>{{ item.id }}</div>
</div>
</div>
PS: vue-resource
已经 officially marked as no longer undergoing active development。尽管使用它没有问题,但您应该考虑使用替代 AJAX 库,例如 axios,以确保您的 Vue 之旅不会过时。