AngularJS
ng-repeat
Recherche…
Introduction
La directive
ngRepeat instancie un modèle une fois par article d'une collection. La collection doit être un tableau ou un objet. Chaque instance de modèle reçoit sa propre étendue, où la variable de boucle donnée est définie sur l'élément de collection en cours et $index est défini sur l'index ou la clé de l'élément.
Syntaxe
-
<element ng-repeat="expression"></element> -
<div ng-repeat="(key, value) in myObj">...</div> -
<div ng-repeat="variable in expression">...</div>
Paramètres
| Variable | Détails |
|---|---|
$index | offset de l'itérateur de nombre de l'élément répété (0..length-1) |
$first | booléen true si l'élément répété est le premier dans l'itérateur. |
$middle | booléen true si l'élément répété est entre le premier et le dernier dans l'itérateur. |
$last | booléen true si l'élément répété est le dernier dans l'itérateur. |
$even | booléen true si la position $index l'itérateur $index est pair (sinon faux). |
$odd | booléen true si la position $index l'itérateur $index est impair (sinon faux). |
Remarques
AngularJS fournit ces paramètres sous la forme de variables spéciales disponibles dans l'expression ng-repeat et à l'intérieur de la balise HTML sur laquelle la ng-repeat se déroule.
Itération sur les propriétés de l'objet
<div ng-repeat="(key, value) in myObj"> ... </div>
Par exemple
<div ng-repeat="n in [42, 42, 43, 43]">
{{n}}
</div>
Suivi et doublons
ngRepeat utilise $ watchCollection pour détecter les modifications dans la collection. Lorsqu'un changement se produit, ngRepeat effectue alors les modifications correspondantes dans le DOM:
- Lorsqu'un élément est ajouté, une nouvelle instance du modèle est ajoutée au DOM.
- Lorsqu'un élément est supprimé, son instance de modèle est supprimée du DOM.
- Lorsque les articles sont réorganisés, leurs modèles respectifs sont réorganisés dans le DOM.
Doublons
-
track bytoute liste pouvant inclure des valeurs en double. -
track byaccélère également considérablement les changements de liste. - Si vous n'utilisez pas
track bydans ce cas, vous obtenez l'erreur suivante:[ngRepeat:dupes]
$scope.numbers = ['1','1','2','3','4'];
<ul>
<li ng-repeat="n in numbers track by $index">
{{n}}
</li>
</ul>
ng-repeat-start + ng-repeat-end
AngularJS 1.2 ng-repeat gère plusieurs éléments avec ng-repeat-start et ng-repeat-end :
// table items
$scope.tableItems = [
{
row1: 'Item 1: Row 1',
row2: 'Item 1: Row 2'
},
{
row1: 'Item 2: Row 1',
row2: 'Item 2: Row 2'
}
];
// template
<table>
<th>
<td>Items</td>
</th>
<tr ng-repeat-start="item in tableItems">
<td ng-bind="item.row1"></td>
</tr>
<tr ng-repeat-end>
<td ng-bind="item.row2"></td>
</tr>
</table>
Sortie:
| Articles |
|---|
| Point 1: Rangée 1 |
| Point 1: Rangée 2 |
| Item 2: Rangée 1 |
| Item 2: Rangée 2 |
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow