Chciałbym również wspomnieć o nowej funkcjonalności AngularJSng-repeat
, a mianowicie o specjalnych punktach początkowych i końcowych powtarzania . Ta funkcjonalność została dodana w celu powtórzenia serii elementów HTML zamiast tylko jednego rodzica elementu HTML.
Aby użyć punktów początkowych i końcowych repeatera, musisz zdefiniować je odpowiednio za pomocą ng-repeat-start
i ng-repeat-end
dyrektyw.
ng-repeat-start
Dyrektywa działa bardzo podobnie do ng-repeat
dyrektywy. Różnica polega na tym, że powtórzy wszystkie elementy HTML (w tym znacznik, w którym jest zdefiniowany) aż do końcowego znacznika HTML, w którym ng-repeat-end
jest umieszczony (w tym znacznik z ng-repeat-end
).
Przykładowy kod (z kontrolera):
// ...
$scope.users = {};
$scope.users["182982"] = {name:"John", age: 30};
$scope.users["198784"] = {name:"Antonio", age: 32};
$scope.users["119827"] = {name:"Stephan", age: 18};
// ...
Przykładowy szablon 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>
Dane wyjściowe wyglądałyby podobnie do następujących (w zależności od stylu 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]
======================
Jak widać, ng-repeat-start
powtarza wszystkie elementy HTML (w tym element z ng-repeat-start
). Wszystkie ng-repeat
specjalne właściwości (w tym przypadku $first
i $index
) działają również zgodnie z oczekiwaniami.