【发布时间】:2017-04-14 09:48:11
【问题描述】:
我正在尝试从我的 HTML 中执行以下操作:
var vm = new Vue({
el: '#loginContent',
data: {
main_message: 'Login',
isLoggedIn: false,
loginError: '',
loginButton:'Login'
},
methods: {
onLogin: function() {
//this.$set(loginSubmit, 'Logging In...');
var data = {
email: $('#email').val(),
password: $('#password').val(),
};
$.ajax({
url: '/api/login',
data: data,
method: 'POST'
}).then(function (response) {
if(response.error) {
console.err("There was an error " + response.error);
this.loginError = 'Error';
} else {
//$('#loginBlock').attr("hidden",true);
console.log(response.user);
if(response.user) {
this.isLoggedIn = true;
} else {
this.loginError = 'User not found';
}
}
}).catch(function (err) {
console.error(err);
});
}
}
});
基本上用户按下登录按钮,onLogin 方法被调用,发送一个帖子到我的 API。该帖子运行良好,我确实在 .then() 承诺中得到了回复。
但是,尝试执行 this.isLoggedIn = true; 之类的操作并不会按照用户登录时我期望 HTML 执行的操作更新我的 DOM。
当我在 Promise 中得到响应并且找不到“vm”实例时,可能是我处于某种后台线程(抱歉,这里是移动开发人员)中?
谢谢
【问题讨论】: