gpt4 book ai didi

javascript - AngularJS:如何在服务中完成 AJAX 调用后执行 Controller 功能?

转载 作者:数据小太阳 更新时间:2023-10-29 05:46:39 24 4
gpt4 key购买 nike

这是我在服务中的代码。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com