我有一个像这样的简单表格
<form @submit.prevent="getSummary">
<input type="text" v-model="userAcccount" placeholder="Enter Account
Number">
<button type="submit" class="btn btn-xs btn-default">Submit</button>
</form>
我在vue中的方法对象中的getSummary方法是这样的
methods: {
getSummary () {
axios.get('core/handle.php', {
params: {
accountNumber: this.userAcccount
}
})
.then(function (response) {
this.userData = response.data;
console.log(this.userData);
})
.catch(function (error) {
alert(error);
});
}
}
我的数据对象包含
data: {
userAcccount: '',
userData: []
},
我正在尝试使用 axios 的响应更新 userData,然后使用它来填充表以进行测试我刚刚尝试了这个
<span v-if="userData.length > 0">
some data
</span>
<span v-else>
data not found
</span>
console.log 显示 userData 已更新,但上面的这段代码没有改变。
原文由 Dapo Michaels 发布,翻译遵循 CC BY-SA 4.0 许可协议
您无法通过
this
在您的then
函数中访问虚拟机。您可以通过三种方式解决此问题:this
作为函数的执行上下文(ES5 函数有自己的 this):this
上下文存储在局部变量中,例如self
或that
:this
:Javascript 中
this
的概念与许多其他编程语言有很大不同,因为它描述了函数的执行上下文。这不是一个容易理解的概念,但这帮助我理解了它:作为参考,MDN 始终是一个不错的去处: