我有一个问题,我在控制器中的范围初始化变量.然后在用户登录时在另一个控制器中进行更改.此变量用于控制导航栏等内容,并根据用户类型限制对站点部分的访问,因此保持其值非常重要.它的问题在于初始化它的控制器,通过角度再次调用,然后将变量重置为其初始值.
我认为这不是声明和初始化全局变量的正确方法,它不是真正的全局变量,所以我的问题是什么是正确的方法,是否有任何关于使用当前版本的角度工作的好例子?
我试图通过正常函数访问全局变量,是否可能?
我使用$ rootScope设置了一些var,我试图通过回调函数来访问它.从控制器调用此回调.我不想传递$rootScope那个回调.
有没有办法访问$rootScope.var?
如果可能,我愿意使用服务.
请建议.
谢谢
我试图访问rootScope如下:
function fbLandingCtrl($scope, $rootScope) {
$rootScope.isFBLoggedin = false;
$scope.login = function() {
console.log( $rootScope.isFBLoggedin);
fbHelper.login(getUserInfo);
};
function getUserInfo(){
fbHelper.getUserInfo(updateStatus);
}
function updateStatus(userInfo){
$rootScope.isFBLoggedin = true;
console.log( $rootScope.isFBLoggedin);
}
}
Run Code Online (Sandbox Code Playgroud)
我的服务如下:
myapp.factory('FBService', [ '$rootScope', function ($rootScope) {
$rootScope.isFBLoggedin = false; // global variable
$rootScope.userName = null;
$rootScope.userEmail = null;
return {
getStatus: function() {
return $rootScope.isFBLoggedin;
},
setStatus: function(status) {
console.log("Status:"+status);
return $rootScope.isFBLoggedin = status;
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
它在updateStatus fn下显示isFBLoggedin为true但它没有反映在视图上 …