2015-06-03 60 views
0

我有这样的服务:AngularJS服务不设置数据正确

myApp.factory('Auth', function() { 
 
    var user; 
 

 
    return { 
 
    setUser: function(aUser) { 
 
     user = aUser; 
 
    }, 
 
    isLoggedIn: function() { 
 
     return (user) ? user : false; 
 
    } 
 
    } 
 
});

而且我将其注入我的控制器 “loginCtrl”,并设置用户:

myApp.controller('loginCtrl', ['$scope', '$http', '$state', 'Auth', 
 
    function($scope, $http, $state, Auth) { 
 
    $scope.login = function() { 
 
     $http.post('/login', $scope.local).success(function(response) { 
 
     Auth.setUser($scope.local); 
 
     console.log(Auth); 
 
     console.log(Auth.user); 
 
     $state.go('news'); 
 
     }); 
 
    }; 
 
    } 
 
]);

Auth.setUser从未像控制台在返回“Undefined”之后立即记录一样工作。我究竟做错了什么?谢谢!

+0

尝试在工厂编写访问(的getUser)函数返回的用户变量,而不是Auth.user – jmw5598

回答

0

您需要添加到您的验证服务:

getUser: function() { 
    return user; 
} 

否则,您无法访问在您验证服务内声明的变量,因为它们受到保护。只有通过返回对象公开的项目才可以访问。

console.log("User:", Auth.getUser()); 
+0

那么多数民众赞成尴尬。咄。 谢谢! – user1854837