Je suis nouveau à promettre des concepts et je suis confronté à un problème pendant que j'essaie de soumettre un formulaire de connexion.Angular Promise ne lance pas un résumé
Lorsque la promesse est résolue, je souhaite mettre à jour l'interface utilisateur en modifiant la valeur d'une variable d'étendue.
Voici la méthode du contrôleur qui est appelé
$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;
});
}
};
et voici ma méthode de service
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);
});
});
};
Donc, une fois la promesse est résolu le ctrl.loginError $ dans le changement du contrôleur sa valeur, mais il ne se met pas à jour sur l'interface utilisateur.
J'ai essayé avec $ apply et ça marche, mais je ne comprends pas pourquoi je dois utiliser $ apply! Je pensais que le cycle de digest commence par défaut!
Im je fais quelque chose de mal? Les méthodes
pas besoin de résoudre la promesse comme ceci en service. vous pouvez renvoyer directement votre appel http –
Le service $ http renvoie une promesse qui déclenche un résumé après traitement. Pas besoin d'envelopper une promesse native. Vous devriez accepter la réponse @Denis Reshetniak. – Jaime