JS
$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-when,那么它可以正常工作。
答案 0 :(得分:5)
这是因为ng-switch
创建了一个子范围,同样适用于ng-repeat。 ng-repeat优先级为 1000 ,ng-switch
位于 800 。因此ng-repeat
在每个重复的div元素上创建的子范围被ng-switch
覆盖,因此元素上ng-repeat
分配的子范围最终消失。一种可能的方法是将ng-switch包装在ng-repeat之外,因为你总是不想评估每个重复元素的ng-switch表达式。这是1.2版本。
现在从1.3.x版本的角度来看,ng-switch的优先级已经修改为 1200 ,并且ng-repeat保持在 1000 ,所以ng - 重复的范围将占上风,因为它现在具有较低的优先级,并且在那种情况下它将起作用。
<强> Plnkr 强>