【发布时间】:2013-10-08 21:10:52
【问题描述】:
我正在尝试通过普通函数访问全局变量,可以吗?
我已经使用 $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);
}
}
我的服务如下:
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 fn 下将 isFBLoggedin 显示为 true,但它没有反映在视图中
我正在打印{{isFBLoggedin}},但 ts 显示为假
终于成功了。
我遵循了@dluz 的解决方案。
我还使用$rootScope.$apply(function() {}}) 来渲染视图
【问题讨论】:
标签: javascript angularjs