我还想提一下AngularJSng-repeat
的一个新功能,即特殊的重复起点和终点。添加该功能是为了重复一系列HTML 元素,而不仅仅是单个父 HTML 元素。
为了使用中继器起点和终点,您必须分别使用ng-repeat-start
和ng-repeat-end
指令来定义它们。
该ng-repeat-start
指令的工作方式与指令非常相似ng-repeat
。不同之处在于它将重复所有HTML 元素(包括定义它的标签)直到ng-repeat-end
放置的结束 HTML 标记(包括带有 的标记ng-repeat-end
)。
示例代码(来自控制器):
// ...
$scope.users = {};
$scope.users["182982"] = {name:"John", age: 30};
$scope.users["198784"] = {name:"Antonio", age: 32};
$scope.users["119827"] = {name:"Stephan", age: 18};
// ...
示例 HTML 模板:
<div ng-repeat-start="(id, user) in users">
==== User details ====
</div>
<div>
<span>{{$index+1}}. </span>
<strong>{{id}} </strong>
<span class="name">{{user.name}} </span>
<span class="age">({{user.age}})</span>
</div>
<div ng-if="!$first">
<img src="/some_image.jpg" alt="some img" title="some img" />
</div>
<div ng-repeat-end>
======================
</div>
输出类似于以下内容(取决于 HTML 样式):
==== User details ====
1. 119827 Stephan (18)
======================
==== User details ====
2. 182982 John (30)
[sample image goes here]
======================
==== User details ====
3. 198784 Antonio (32)
[sample image goes here]
======================
如您所见,ng-repeat-start
重复所有 HTML 元素(包括带有 的元素ng-repeat-start
)。所有ng-repeat
特殊属性(在本例中为$first
和$index
)也可以按预期工作。