2015-02-01 9 views
1

ng-repeat의 버튼 중 하나라도 클릭하면 div를 숨기려고합니다. 그러나 그것이 작동하지 않는 것 같아요, ng-hide 또는 ng-show가 ng-repeat 내에서 제어되는 경우 작동하지 않는다고 생각하게합니까?ng-repeat 또는 ng-show가 ng-repeat에서 제어되는 경우 작동하지 않습니다.

<div data-ng-hide="showChooseHardware"> 
    <table class="table"> 
     <tbody> 
      <tr data-ng-repeat="hardware in hardwares"> 
       <td>{{hardware.name}}</td> 
       <td> 
        <button type="button" class="btn" data-ng-click="showChooseHardware=!showChooseHardware"/> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

답변

2

이 반복 겨하는 각 템플릿에 대한 새 범위를 생성한다는 사실에 기인 때문에 자바 스크립트 (및 AngularJS와)에서 작동하는 방법 프로토 타입 상속.

사용 대상 :

$scope.viewModel = { showChooseHardware: false }; 

HTML :

data-ng-hide="viewModel.showChooseHardware" 

그리고는 :

data-ng-click="viewModel.showChooseHardware=!viewModel.showChooseHardware" 

문제에 대한 좋은 설명은 here를 찾을 수 있습니다.

변수가 showChooseHardware이기 때문에이 경우에는 ng-show을 사용하는 것이 좋습니다.

+0

감사합니다. 왜 ng-hide와 showChooseHardware를 사용했는지는 디버깅으로 인한 것입니다. ng-show와 ng-hide를 모두 시도하여 ng-show가 문제인지 확인했습니다. 나는 지금 ng-show로 되돌아 갔다. 자, 참조 된 링크를 읽을 필요가 있습니다. 타이! –

+0

범위 상속 문제를 피하는 간단하고 효과적인 방법은 controllerAs 구문을 사용하는 것입니다. 'ng-controller = "MyController as ctrl"ng-model = "ctrl.showChooseHardware"' –

1

ngRepeat 지시어는 모든 반복에서 배열의 모든 항목에 대해 새로운 범위를 만듭니다. 문제가 발생할 수 있습니다.