0
我是新承諾的概念,我在嘗試提交登錄表單時遇到問題。Angular Promise不會運行摘要
當承諾解決時,我想通過更改範圍變量的值來更新ui。
這裏是被稱爲
$ctrl.loginForm = function(isValid) {
// check to make sure the form is completely valid
if (isValid) {
LoginService.login($ctrl.user).then(function (value) {
$ctrl.loginError = false;
var cookie = value.token;
}, function (reason) {
$ctrl.loginError = true;
});
}
};
控制方法,這裏是我的服務方法
service.login = function(credentials) {
return new Promise((resolve, reject) => {
$http.post(AppConst.Settings.apiUrl + 'api-token-auth/',credentials).success((data) => {
resolve(data);
}).error((err, status) => {
reject(err, status);
});
});
};
所以一旦承諾在控制器改變解決了$ ctrl.loginError它的價值,但它不會在UI上更新。
我試過使用$ apply,它可以工作,但我不明白爲什麼我必須使用$ apply!我認爲摘要循環默認開始!
我做錯了什麼?
無需解決此類服務中的承諾。你可以直接返回你的http呼叫 –
$ http服務返回一個承諾,處理後觸發一個摘要。不需要將其包裝在本機承諾上。你應該接受@Denis Reshetniak的答案。 – Jaime