2016-08-07 2 views
0

에 반영되지 예상하고 scope.checked 값은 UI 일반적으로

.directive('comparisonSlider', 
    function() { 
     return{ 
      restrict: 'E', 
      templateUrl: '/app/reports/comparison-slider.html', 
      controller: function ($scope, $rootScope) { 
       $scope.checked = false; 
       $rootScope.$on('compare', 
         function() { 
          $scope.checked = true; 
         }, 
         true); 
      } 
     } 
    } 
) 

에 반영되지만, 다음 코드는 작동하지만 변화로 다음 코드는 작동 범위가 UI에 반영되지 않습니다.

.directive('comparisonSlider', 
    function() { 
     return{ 
      restrict: 'E', 
      templateUrl: '/app/reports/comparison-slider.html', 
      controller: function ($scope, $rootScope) { 
       $scope.checked = false; 
       $rootScope.$on('compare', 
         function() { 
          $scope.checked = !$scope.checked; 
         }, 
         true); 
      } 
     } 
    } 
) 

아이디어가 있으십니까?

+0

해보십시오 $의 log.info ($를 scope.checked)를 호출합니다. –

+0

$ log 서비스를 사용하면 많은 정보를 제공 할 필요가 없지만'$ scope.checked'는'$ scope'에 프리미티브 속성으로'checked'를 만듭니다. 이것은'상속 문제 . 여기에는'ng-repeat','ng-include','ng-if' 또는 다른 유사한 지시문을 사용하는 문제가 포함됩니다. 이는 문제가 HTML에있을 수 있음을 의미합니다. 'checked '가 객체이거나 응답의 경우 객체 (컨트롤러)의 속성 인 경우 상속 문제가 발생하지 않습니다. http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs – Claies

답변

0

이 작동 다른 하나는

.directive('comparisonSlider', 
    function() { 
     return{ 
      restrict: 'E', 
      templateUrl: '/app/reports/comparison-slider.html', 
      controllerAs: 'sliderCtrl', 
      controller: function ($scope, $rootScope) { 
       var self = this; 
       self.checked = false; 
       $rootScope.$on('compare', 
         function() { 
          self.checked = !self.checked; 
         }, 
         true); 
      } 
     } 
    } 
) 
0

변경하지 않는 이유, 확실하지 예상대로 :

self.checked = !self.checked; 

에 :

self.checked = false; 
+0

이 작동하고 이것이 내가 제공 한 답변을 참조하십시오. –

관련 문제