这是我在服务中的代码。
this.loginUser = function(checkUser) {
Parse.User.logIn(checkUser.username, checkUser.password, {
success: function(user) {
$rootScope.$apply(function (){
$rootScope.currentUser = user;
});
}
});
};
这是我在 Controller 中的代码:
$scope.logIn = function(){
authenticationService.loginUser($scope.checkUser);
console.log($scope.currentUser)
};
所以,我想做的是,在 AJAX 调用完成后执行一些代码,其成功函数设置 $scope.currentUser 的值,我可以将其用于某些条件逻辑(如重定向等)
成功函数正确设置了值,但是 console.log
应该在执行 authenticationService.loginUser()
函数之后执行。
最佳答案
您需要使用 $q 返回 promise 并采取行动。
例如在您的服务中:
this.loginUser = function(checkUser) {
var deferred = $q.defer();
Parse.User.logIn(checkUser.username, checkUser.password, {
success: function(user) {
$rootScope.$apply(function (){
$rootScope.currentUser = user;
});
deferred.resolve();
}
});
return deferred.promise;
};
然后在你的 Controller 中对成功采取行动:
$scope.logIn = function(){
authenticationService.loginUser($scope.checkUser).then(function() {
console.log($rootScope.currentUser));
});
};
关于javascript - AngularJS:如何在服务中完成 AJAX 调用后执行 Controller 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23546593/