일반 함수를 통해 전역 변수에 액세스하려고합니다. 가능합니까?AngularJs : 컨트롤러 외부에서 전역 변수에 액세스하는 방법?
$ 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);
}
}
을 내 서비스는이다 : 그것은 updateStatus의 FN에서 참으로 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}}
입니다. 거짓을 나타내는 TS
마지막으로 작동합니다.
@ dluz 용액을 따라 갔다.
는 또한 뷰
을 렌더링하는$rootScope.$apply(function() {}})
을 사용하면 컨트롤러 기준으로 $ rootScope을 추가 한 경우 당신은 컨트롤러 내부에 $ rootScope.var에 액세스 할 수 있습니다
을 정확히 편집했는데, 정상적인 기능에서 해당 서비스에 직접 액세스 할 수 있습니까? –
"정상적인 기능"은 어디에 정의되어 있습니까? '지시어'나'컨트롤러'안에있을 것인가? 따라서 대답은 YES입니다. 지시어 나 컨트롤러의 의존성으로 서비스를 추가하기 만하면됩니다. 정상적인 기능이 다른 곳에서 정의된다면 그것은 코드 디자인 문제이며 논리를 검토해야합니다. –
"정상적인 기능"이란 무엇입니까? 각도 범위를 벗어난 함수? 코드 디자인 문제가있는 것 같습니다 ... – Scalpweb