Приложение для разбора/AngularJS использует Promises. Войти функция было предположить, чтобы перенаправить пользователя с $ location.path, но я должен был настроить его, чтобы заставить его работать в соответствии с этой должности:
$location.path doesn't change in a factory with AngularJS
В соответствии с этим так что пользователь, вам нужно заменить вызов $ location.path с
$rootScope.$apply(function(){$location.path('/somelocatin'); });
См ответ здесь: https://stackoverflow.com/a/19738154/1743693
Это решило проблему, но я должен понимать: ПОЧЕМУ не работает родной звонок? и как эта проблема решает проблему? как я узнаю, что я не закручиваю цикл AngularJS? или это нечто большее, чем реализация Parse шаблона Promise?
Это код Логин:
function login() {
vm.dataLoading = true;
var response = AuthenticationService.Login(vm.email, vm.password).then(
function (user) {
vm.dataLoading = false;
//$location.path('/'); -- <-- **doesn't work**
vm.user = Parse.User.current().getEmail();
$rootScope.$apply(function() { $location.path('/'); });
},
function() {
$rootScope.$apply(function() { $location.path('/login'); });
FlashService.Error(response.message);
vm.dataLoading = false;
});
};
И реализация службы аутентификации:
function Login(username, password, success, error) {
return Parse.User.logIn(username, password, {
success: function (user) {
return user;
},
error: function (user, error) {
return { user: user, error: error };
}
});
}
(Первоисточник Войти можно найти здесь: http://jasonwatmore.com/post/2015/03/10/AngularJS-User-Registration-and-Login-Example.aspx)
Спасибо! Я ломал голову, но «$ scope. $ Apply();« отлично справлялся со мной. Не знал, что этот метод также применим к силовому обновлению '$ location'. – user2513149
Речь идет не о '$ location', а о том, чтобы Angular узнал об изменениях, которые были сделаны в неагрегационных асинхронных обратных вызовах (и обратный вызов Parse' then'). Если вы действительно не хотите исследовать Угловые внутренности каждый раз, когда это происходит, разумно предположить, что Угловые службы всегда так или иначе полагаются на цикл дайджеста, а '$ rootScope. $ Apply()' следует вызывать в конце неагломератного обратного вызова. – estus