programing

변경에 대한 AngularJS $watch 루트 범위 변수

newsource 2023. 3. 21. 22:12

변경에 대한 AngularJS $watch 루트 범위 변수

다음 $rootScope 변수를 사용하여 현재 로그인한 사용자 권한 수준을 저장한 후 다른 컨트롤러에서 이 변수에 액세스합니다.rootScope 변수의 변경을 감시하고 rootscope 변수를 변경하여 컨트롤러 고유의 변수를 갱신할 수 있는 방법이 있습니까?아래는 제가 사용하고 있는 코드입니다만, 제가 무엇을 잘못하고 있는지, 어떻게 고쳐야 하는지 가르쳐 주실 수 있습니까?감사해요.

.run 아래의 app.js:

 $rootScope.uPLevel = 0;

컨트롤러

   $scope.$watch($rootScope.uPLevel, function() {
            $scope.userPLevel = $rootScope.uPLevel;
   }, true);

첫 번째 파라미터는$watch문자열 또는 함수(필수) 중 하나여야 합니다.지금 당신은 그 가치를 전달하고 있다.$rootScope.uPLevel컨트롤러 초기화 시.

$scope.$watch(function() {
  return $rootScope.uPLevel;
}, function() {
  $scope.userPLevel = $rootScope.uPLevel;
}, true);

2개의 사이드:

  • 이 값을 서비스에 저장하는 것이 현명할 수 있습니다.$rootScope.
  • 한다면uPLevel(예에서 알 수 있듯이) 정수일 뿐이므로 패스할 필요가 없습니다.true세 번째 파라미터로 지정합니다.이것은 어레이와 오브젝트 전용입니다.만약 당신이 컬렉션을 보고 싶다면, 나는 그것을 사용하는 것을 추천한다.$watchCollection대신.

다음과 같은 $rootScope 변수를 볼 것을 권장합니다.

$scope.$watch('$root.uPLevel', function() {
    $scope.userPLevel = $rootScope.uPLevel;
});

이렇게 하면 현재 지시/컨트롤러가 파괴됩니다.시계도 클리어 됩니다.$rootScope 단위입니다.rootScope).$watch case, 시계는 영원히 남습니다.

언급URL : https://stackoverflow.com/questions/22738482/angularjs-watch-root-scope-variable-for-changes