我想通过一个正常的函数来访问一个全局变量,这有可能吗?AngularJs:如何访问控制器之外的全局变量?
我已经使用$ rootScope设置了一些变量,我试图通过回调函数来访问它。 该回调从控制器调用。我不想在该回调中通过$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);
}
}
,我的服务是:
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;
}
};
}]);
它显示isFBLoggedin为真下updateStatus FN,但它是没有反映在视图上
我打印{{isFBLoggedin}}
但是ts显示虚假
最后它的工作。
我跟着@ dluz的解决方案。
我也用$rootScope.$apply(function() {}})
渲染视图
确切地说,但我可以直接从正常的功能访问该服务? –
您的“正常功能”在哪里定义?!?它会在'directive'或'controller'内,对吗?!?所以答案是YES,您只需要将该服务添加为您的指令或控制器的依赖项即可。如果你的普通函数是在其他地方定义的,那么这是一个代码设计问题,你需要检查你的逻辑。 –
你是什么意思“正常功能”?任何角度范围之外的函数?听起来就像你有一个代码设计问题... – Scalpweb