我正在使用Vue.js版本2,尝试更新视图中使用的变量。
请耐心等待,我有以下代码:
new Vue({
el: '#products',
data: {
showProductModal: false,
product: {}
},
methods: {
retrieveProduct(id) {
axios.get('/product/'+id).then(function (response) {
this.product = response.data;
console.log(this.product);
});
}
}
请注意:
console.log(this.product)导致
{id:1,名称:“柠檬蛋糕”,描述:“传统柠檬蛋糕”,pic_url:“”,category_id:1,...}
这正是预期的输出。但是,在视图中调用{{product}}后,模板不会以任何方式更新,并永远陷入{}。
我还测试了双向数据绑定是否有效,答案是肯定的。实际上,一切都与此完全不同。难道我做错了什么?从promise中检索对象后,我是否应该期望模板未更新?
感谢任何帮助。提前谢谢。
修改
答案 0 :(得分:2)
由于缺乏声明或范围问题,您可能会遇到self
的问题。请尝试以下方法:
retrieveProduct(id) {
var this_vue_instance = this;
axios.get('/product/'+id).then(function (response) {
this_vue_instance.product = response.data;
console.log(this_vue_instance.product);
});
}
答案 1 :(得分:1)
我认为这应该是范围界定的一些问题。 试试这个:
retrieveProduct(id) {
axios.get('/product/' + id).then(response => {
this.product = response.data;
});
}
然后使用vue-devtools
检查数据是否已正确更改。