2

JSNG重複和NG-開關不相同的元素

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

HTML

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

當我做到這一點上面,輸出我得到的是

Test Test Test 
上工作

它似乎無法訪問項目。如果我刪除了ng-switch,那麼它可以正常工作。

回答

5

這是因爲ng-switch創建一個子範圍,同樣適用於ng-repeat。 ng-repeat優先運行1000ng-switch at 800。因此,由ng-repeat在每個重複的div元素上創建的子作用域被ng-switch覆蓋,因此ng-repeat分配的子作用域最終消失。一種可能的方式可能是將ng-switch包裝在ng-repeat之外,因爲您無論如何都不想評估每個重複元素的ng-switch表達式。這是1.2版本。

從NG-開關的角度的優先級的的1.3.x版

現在已被修改,以1200和NG-重複保持在,所以NG-重複範圍爲準,因爲它是低優先級的現在它會在這種情況下工作。

Plnkr

+0

感謝。這是一個很好的答案。希望有一個調試器可以幫助我查看範圍,以防將來遇到類似問題。 – allenylzhou 2014-09-04 22:31:23

+0

@allenylzhou升級到最新版本的角度,你應該很好。 – PSL 2014-09-04 22:38:46