AngularJS 服务没有正确设置数据

AngularJS service not setting data correctly

我有这项服务:

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 似乎从来没有完成它的工作,因为控制台在 return "Undefined" 之后立即记录。我究竟做错了什么?谢谢!

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

getUser: function () {
    return user;
}

否则,您无法访问在您的 Auth 服务中声明的变量,因为它们是受保护的。只有您通过 return 对象公开的项目才可以访问。

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