我正在尝试使用angularjs中的工厂函数登录用户。 这是我检查登录信息的代码:
$scope.login = function(user) {
if(!$rootScope.isLoggedIn) {
LoginService.login($scope.user, $scope);
console.log($rootScope.isLoggedIn);
} else {
$location.path('/home');
}
}
虽然LoginService
工厂服务如下所示:
.factory('LoginService', ['$http', '$location', '$rootScope', function($http,$location, $rootScope) {
return {
login: function(user, scope) {
$rootScope.processGoingOn = true;
var $promise = $http.post('user.php', user);
$promise.then(function(msg) {
var responseData = msg.data;
console.log(responseData);
if(responseData['login_success'] == 'true') {
$rootScope.isLoggedIn = true;
$rootScope.processGoingOn = false;
// success redirect
} else {
$rootScope.isLoggedIn = false;
$rootScope.processGoingOn = false;
// try login again
}
});
}
....
}
});
$rootScope.isLoggedIn
中的更改未反映$scope.login()
功能成功或失败,是否有任何建议?
答案 0 :(得分:0)
这是因为在解析promise之前会返回登录功能。
在做这个的路上可以像这样返回$ promise
login: function(user, scope){
$rootScope.processGoingOn = true;
return $http.post('user.php', user);
}
然后拨打console.log($rootScope.isLoggedIn);