我想通过一个普通函数访问一个全局变量,这种做法可行吗?
我使用了$rootScope设置了一些变量,并试图通过一个回调函数来访问它。这个回调函数是从控制器调用的。我不想在回调函数中传递$rootScope。
有办法可以访问 $rootScope.var 吗?
如果可以,我可以使用 service。
请给出建议。
谢谢。
我尝试以下方式访问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;
}
};
}]);
在updateStatus函数下,它显示isFBLoggedin为true,但在视图中没有反映出来。
我打印了{{isFBLoggedin}}
,但是它显示为false。
最终它正常工作了。
我按照@dluz的解决方案进行操作。
我还使用了$rootScope.$apply(function() {}})
来渲染视图。
$rootScope.$apply(function() {}})
。 - A_J