2

JSNG 반복 및 NG-스위치는 동일한 요소

$scope.mode = "test" 
$scope.array = ['test1', 'test2', 'test3'] 

나는이에게 위의 작업을 수행 할 때 내가 얻을 출력은

<div ng-switch on="mode"> 
    <div ng-repeat="item in array" ng-switch-when="test"> 
     Test {{item}} 
    </div> 
</div> 

HTML

Test Test Test 
을 작동하지 않습니다

항목에 액세스 할 수없는 것 같습니다. ng-switch-를 제거하면 잘 작동합니다.

답변

5

ng-switch은 하위 범위를 만들고 ng-repeat에도 동일하게 적용되기 때문입니다. ng-repeat는 우선 순위 1000ng-switch800에서 실행됩니다. 반복되는 div 요소 각각에 대해 ng-repeat에 의해 생성 된 자식 범위가 ng-switch으로 덮어 쓰여 지므로 요소에 할당 된 자식 범위 ng-repeat이 궁극적으로 사라집니다. 어쨌든 반복되는 모든 요소에 대해 ng-switch 표현식을 평가하고 싶지 않으므로 ng-repeat 외부에서 ng-switch를 래핑하는 것이 가능할 수 있습니다. 이 버전은 1.2 버전입니다. NG 스위치의 각 우선 순위의 1.3.x의 버전에서 이제

1200로 수정하고 지금 낮은 우선 순위이기 때문에 NG 반복, 그래서 겨 반복되는 범위는 살아남 게 될 것이다, 1000에 남아있다 이 경우에도 작동합니다.

Plnkr

+0

감사합니다. 이것은 훌륭한 대답입니다. 나중에 비슷한 문제가 발생할 경우를 대비하여 범위를 시각화하는 데 도움이되는 디버거를 사용하길 바랍니다. – allenylzhou

+0

@allenylzhou 각도의 최신 버전으로 업그레이드하면 좋을 것입니다. – PSL