使用ng-repeat时,ng-repeat所在的标签会被循环生成,例如:
<dl ng-repeat="item in [1,2,3,4,5]"> <dt>item : {{item}}</dt> <dd> {{item}} </dd> </dl>
生成的代码是这样的:
<dl class="ng-scope" ng-repeat="item in [1,2,3,4,5]"> <dt class="ng-binding">item : 1</dt> <dd class="ng-binding"> 1 </dd> </dl> <dl class="ng-scope" ng-repeat="item in [1,2,3,4,5]"> <dt class="ng-binding">item : 2</dt> <dd class="ng-binding"> 2 </dd> </dl> <dl class="ng-scope" ng-repeat="item in [1,2,3,4,5]"> <dt class="ng-binding">item : 3</dt> <dd class="ng-binding"> 3 </dd> </dl> <dl class="ng-scope" ng-repeat="item in [1,2,3,4,5]"> <dt class="ng-binding">item : 4</dt> <dd class="ng-binding"> 4 </dd> </dl> <dl class="ng-scope" ng-repeat="item in [1,2,3,4,5]"> <dt class="ng-binding">item : 5</dt> <dd class="ng-binding"> 5 </dd> </dl>
显然不是我想要的效果,我不想要这么多的dl标签。
这时用 ng-repeat-start、ng-repeat-end 可以解决:
<dl> <dt ng-repeat-start="item in [1,2,3,4,5]">item : {{item}}</dt> <dd ng-repeat-end> {{item}} </dd> </dl>
生成的代码是这样的:
<dl> <dt ng-repeat-start="item in [1,2,3,4,5]">item : 1</dt> <dd ng-repeat-end=""> 1 </dd> <dt ng-repeat-start="item in [1,2,3,4,5]">item : 2</dt> <dd ng-repeat-end=""> 2 </dd> <dt ng-repeat-start="item in [1,2,3,4,5]">item : 3</dt> <dd ng-repeat-end=""> 3 </dd> <dt ng-repeat-start="item in [1,2,3,4,5]">item : 4</dt> <dd ng-repeat-end=""> 4 </dd> <dt ng-repeat-start="item in [1,2,3,4,5]">item : 5</dt> <dd ng-repeat-end=""> 5 </dd> </dl>
ng-repeat-start、ng-repeat-end 还可以用在其它不希望循环外层标签的场景。也可以这样用:
<dl> <dt>item</dt> <dd ng-repeat-start="item in [1,2,3,4,5]" ng-repeat-end> item :{{item}} </dd> </dl>
这样就跟使用ng-repeat的效果一样了。