Вот мой код в сервисе.AngularJS: Как выполнить функцию контроллера ПОСЛЕ завершения вызова AJAX в службе?
this.loginUser = function(checkUser) {
Parse.User.logIn(checkUser.username, checkUser.password, {
success: function(user) {
$rootScope.$apply(function(){
$rootScope.currentUser = user;
});
}
});
};
Вот мой код в контроллере:
$scope.logIn = function(){
authenticationService.loginUser($scope.checkUser);
console.log($scope.currentUser)
};
Итак, что я хочу сделать это, выполнить некоторый код после завершения AJAX вызова, функция которого успех устанавливает значение $ объема. currentUser, который я могу использовать для некоторой условной логики (например, перенаправления и т. д.) Функция успеха правильно устанавливает значение, но console.log
должен быть выполнен ПОСЛЕ выполнения функции authenticationService.loginUser()
.
Я попробовал это. Но мой 'console.log ($ scope.currentUser)' все еще не регистрирует новое значение currentUser (задается функцией успеха ajax-вызова в сервисе.) –
Я сделал редактирование. Служба устанавливает текущего пользователя на $ rootScope, контроллер просматривает $ scope.currentUser, и это должно было быть $ rootScope.currentUser. – comradburk
Да! Это сработало! Спасибо :-) Хотя мне было предложено, что использование $ rootScope - это плохая практика. Теперь я пытаюсь реорганизовать свой код, чтобы удалить использование $ rootScope из моей службы. :-) –