AngularJs: Как получить доступ к глобальным переменным вне контроллера? [Дубликат]
На этот вопрос уже есть ответ здесь:
Глобальные переменные в AngularJS 12 ответовЯ пытаюсь получить доступ к глобальной переменной через обычную функцию, это возможно?
Я установил некоторые переменные, используя $ 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 как true при updateStatus fn, но это не отражается на представлении
Я печатаю{{isFBLoggedin}}
но это показывает ложь
Наконец-то работает.
Я последовал решению @ dluz.
Я также использовал$rootScope.$apply(function() {}})
визуализировать взгляды