2012-11-26 2 views
2

지시문에 로컬 $scope에있는 변수와 $rootScope에있는 변수에 대해 유니온 $watch을 만들고 싶습니다. 다음과 같이 표시됩니다.여러 스코프에 걸쳐 변수를 감시하는 중

myapp.directive('cohnbread', 
      ['TEMPLATE_URL', '$rootScope', 
    function(TEMPLATE_URL, $rootScope) { 
     return { 
      templateUrl: TEMPLATE_URL + "cohnbread.html", 
      scope: { odp: '@' }, 
      link: function(scope, elem, attrs) { 
       // here I would like to register a callback to fire 
       // whenever scope.bar or $rootScope.foo fires. Something like: 
       $watchBoth('scope.bar', '$rootScope.foo', onBarOrFooChange); 
      } 
     }; 
    }]); 

해결 방법이 있습니까?

자세한 정보를 제공하도록 수정되었습니다.

+1

? $ watch up을 어디에서 설정하고 있습니까? $ watch 콜백을 함수로 전달하는 서비스가 작동 할 수도 있지만, 실제로 누군가에게 행운의 추측이없는 한 질문에 대한 충분한 정보를 제공하지 않았습니다. –

+0

같은 이름의 변수가 2 개 있고 왜 둘 다보고 있어야하는지 물어볼 수 있습니까? 실제로 별개의 목적이있는 경우 적절하게 이름을 지정하고, 더 구체적 인 범위 변수 –

+0

@LiviuT 만 신경 써야합니다. 이름이 같지 않습니다. 그들은 별도의 범위에서 별도의 변수입니다. –

답변

1

그냥 콜백을 해고하고자하는 경우 때 하나 명 또는 다른 변경, 단지 설치 각 하나에 대한 $watch. 예를 들면 :

scope.$watch('bar', onBarOrFooChange); 
scope.$watch('foo', onBarOrFooChange); 

또는

당신의 지시가 고립 된 범위가있는 경우, 당신 수 설정이 같은 foo에 대한 $watch :

당신은 $에서 볼 일을하려고 무엇
scope.$watch(function() {return $rootScope.foo}, onBarOrFooChange); 
관련 문제