AngularJS
ng-repeat
Ricerca…
introduzione
La direttiva
ngRepeat
crea un'istanza di un modello una volta per elemento da una raccolta. La raccolta deve essere una matrice o un oggetto. Ogni istanza del modello ottiene il proprio ambito, dove la variabile del ciclo data è impostata sull'elemento della raccolta corrente e $index
è impostato sull'indice o sulla chiave dell'elemento.
Sintassi
-
<element ng-repeat="expression"></element>
-
<div ng-repeat="(key, value) in myObj">...</div>
-
<div ng-repeat="variable in expression">...</div>
Parametri
Variabile | Dettagli |
---|---|
$index | offset dell'iteratore del numero dell'elemento ripetuto (0..length-1) |
$first | booleano vero se l'elemento ripetuto è il primo nell'iteratore. |
$middle | booleano vero se l'elemento ripetuto si trova tra il primo e l'ultimo nell'iteratore. |
$last | booleano vero se l'elemento ripetuto è l'ultimo nell'iteratore. |
$even | booleano vero se la posizione iteratore $index è pari (altrimenti false). |
$odd | booleano true se la posizione iterator $index è dispari (altrimenti false). |
Osservazioni
AngularJS fornisce questi parametri come variabili speciali disponibili nell'espressione ng-repeat e ovunque all'interno del tag HTML su cui vive la ng-repeat.
Iterare sulle proprietà dell'oggetto
<div ng-repeat="(key, value) in myObj"> ... </div>
Per esempio
<div ng-repeat="n in [42, 42, 43, 43]">
{{n}}
</div>
Tracciamento e duplicati
ngRepeat
utilizza $ watchCollection per rilevare le modifiche nella raccolta. Quando si verifica una modifica, ngRepeat
esegue quindi le modifiche corrispondenti al DOM:
- Quando viene aggiunto un elemento, una nuova istanza del modello viene aggiunta al DOM.
- Quando un elemento viene rimosso, l'istanza del modello viene rimossa dal DOM.
- Quando gli articoli vengono riordinati, i rispettivi modelli vengono riordinati nel DOM.
duplicati
-
track by
per qualsiasi elenco che possa includere valori duplicati. -
track by
accelera anche le modifiche delle liste in modo significativo. - Se in questo caso non si usa la funzione
track by
, si ottiene l'errore:[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
gestisce più elementi con ng-repeat-start
e 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>
Produzione:
Elementi |
---|
Elemento 1: riga 1 |
Elemento 1: riga 2 |
Articolo 2: Riga 1 |
Elemento 2: riga 2 |
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow