AngularJS
powtórz
Szukaj…
Wprowadzenie
Dyrektywa
ngRepeat
tworzy szablon raz dla każdego elementu z kolekcji. Kolekcja musi być tablicą lub obiektem. Każda instancja szablonu ma swój własny zakres, w którym dana zmienna pętli jest ustawiona na bieżący element kolekcji, a $index
na indeks elementu lub klucz.
Składnia
-
<element ng-repeat="expression"></element>
-
<div ng-repeat="(key, value) in myObj">...</div>
-
<div ng-repeat="variable in expression">...</div>
Parametry
Zmienna | Detale |
---|---|
$index | przesunięcie iteratora liczb powtarzanego elementu (0.. długość-1) |
$first | boolean prawda, jeśli powtarzany element jest pierwszy w iteratorze. |
$middle | boolean prawda, jeśli powtarzany element znajduje się między pierwszym a ostatnim w iteratorze. |
$last | boolean true, jeśli powtarzany element jest ostatni w iteratorze. |
$even | boolean prawda, jeśli $index iteratora $index pozycja jest parzysta (w przeciwnym razie fałsz). |
$odd | boolean true, jeśli $index iteratora $index jest nieparzysty (w przeciwnym razie false). |
Uwagi
AngularJS zapewnia te parametry jako specjalne zmienne, które są dostępne w wyrażeniu ng-repeat i w dowolnym miejscu znacznika HTML, na którym żyje powtórzenie ng.
Iteracja po właściwościach obiektu
<div ng-repeat="(key, value) in myObj"> ... </div>
Na przykład
<div ng-repeat="n in [42, 42, 43, 43]">
{{n}}
</div>
Śledzenie i duplikaty
ngRepeat
używa $ watchCollection do wykrywania zmian w kolekcji. Kiedy nastąpi zmiana, ngRepeat
dokonuje odpowiednich zmian w DOM:
- Po dodaniu elementu do DOM jest dodawane nowe wystąpienie szablonu.
- Po usunięciu elementu jego instancja szablonu jest usuwana z DOM.
- Po zmianie kolejności elementów, ich odpowiednie szablony są ponownie uporządkowane w DOM.
Duplikaty
-
track by
dowolnej listy, która może zawierać zduplikowane wartości. -
track by
również znacznie przyspiesza zmiany na liście. - Jeśli w tym przypadku nie używasz funkcji
track by
,[ngRepeat:dupes]
błąd:[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
obsługuje wiele elementów z ng-repeat-start
i 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>
Wynik:
Przedmiotów |
---|
Pozycja 1: wiersz 1 |
Pozycja 1: wiersz 2 |
Pozycja 2: wiersz 1 |
Pozycja 2: wiersz 2 |
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow