AngularJs: Jak uzyskać dostęp do zmiennych globalnych poza kontrolerem? [duplikować]
To pytanie ma już tutaj odpowiedź:
Zmienne globalne w AngularJS 12 odpowiedziPróbuję uzyskać dostęp do zmiennej globalnej za pomocą normalnej funkcji, czy to możliwe?
Ustawiłem var za pomocą $ rootScope i próbuję uzyskać do niego dostęp za pośrednictwem funkcji zwrotnej. To wywołanie zwrotne jest wywoływane z kontrolera. Nie chcę przejść$rootScope
w tym wywołaniu zwrotnym.
Czy jest jakiś sposób na uzyskanie dostępu do tego$rootScope.var
?
Jestem otwarty na korzystanie z usługi, jeśli jest to możliwe.
Proszę zasugeruj.
Dzięki
Próbuję uzyskać dostęp do rootScope w następujący sposób:
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);
}
}
a moja usługa jest następująca:
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;
}
};
}]);
to pokazuje, że BLOGoggedin jest prawdziwe w updateStatus fn, ale nie jest widoczne w widoku
Drukuję{{isFBLoggedin}}
ale ts pokazuje fałszywe
Wreszcie działa.
Śledziłem rozwiązanie @ dluz.
Ja też użyłem$rootScope.$apply(function() {}})
do renderowania widoków