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,那么它可以正常工作。
这是因为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版本。
现在,从angular的1.3.x版本开始,ng-switch的优先级已修改为1200,并且ng-repeat仍为1000,因此ng重复的范围将占上风,因为它现在的优先级较低,在这种情况下它将起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句