我正在尝试使用服务从另一个控制器访问当前用户变量。这是我的代码:
服务
angular.module('app').factory('AuthService', function ($http) {
var currentUser;
});
控制器1:
angular.module('app').controller('Signup', function ($scope, AuthService) {
AuthService.currentUser = "test@email.com"
});
控制器2:
angular.module('app').controller('Login', function ($scope, AuthService) {
$scope.user = AuthService.currentUser;
});
查看:
<body ng-controller="Login" ng-cloak>
<button class="btn btn-link navbar-btn pull-right">{{user}}</button>
</body>
从查看chrome中的开发工具我可以看到“用户”未定义。有什么想法吗?
答案 0 :(得分:3)
工厂应该返回构成服务的功能或对象。您的工厂定义了一个局部变量,并且不会返回任何内容。所以服务实际上是未定义的。
应该是:
angular.module('app').factory('AuthService', function () {
return {
currentUser: null;
}
});
答案 1 :(得分:1)
更改服务如下。出现此问题是因为有问题的变量不可见。要公开数据,您应该返回一个包含要共享的所有方法和变量的对象。请小心!分享变量是一种很好的做法。使用get和set方法。随着系统的发展,直接对变量行为会导致问题。
angular.module('app').factory('AuthService', function ($http) {
var currentUser = "";
return {
setUser : function(user){
currentUser = user;
},
getUser : function(){
return currentUser;
}
};
});