AngularJS
нг-повтор
Поиск…
Вступление
Директива
ngRepeat создает экземпляр шаблона один раз за элемент из коллекции. Коллекция должна быть массивом или объектом. Каждый экземпляр шаблона получает свою собственную область, где заданная переменная цикла устанавливается на текущий элемент коллекции, а $index - на индекс элемента или ключ.
Синтаксис
-
<element ng-repeat="expression"></element> -
<div ng-repeat="(key, value) in myObj">...</div> -
<div ng-repeat="variable in expression">...</div>
параметры
| переменная | подробности |
|---|---|
$index | число итераторное смещение повторяющегося элемента (0..length-1) |
$first | boolean true, если повторный элемент является первым в итераторе. |
$middle | boolean true, если повторяющийся элемент находится между первым и последним в итераторе. |
$last | boolean true, если повторный элемент является последним в итераторе. |
$even | boolean true, если позиция итератора $index является четной (в противном случае ложной). |
$odd | boolean true, если позиция итератора $index нечетна (в противном случае ложна). |
замечания
AngularJS предоставляет эти параметры в виде специальных переменных, которые доступны в выражении ng-repeat и в любом месте HTML-тега, на котором живет ng-repeat.
Итерирование свойств объекта
<div ng-repeat="(key, value) in myObj"> ... </div>
Например
<div ng-repeat="n in [42, 42, 43, 43]">
{{n}}
</div>
Отслеживание и дублирование
ngRepeat использует $ watchCollection для обнаружения изменений в коллекции. Когда происходит изменение, ngRepeat затем вносит соответствующие изменения в DOM:
- Когда элемент добавляется, в DOM добавляется новый экземпляр шаблона.
- Когда элемент удаляется, его экземпляр шаблона удаляется из DOM.
- Когда элементы переупорядочиваются, их соответствующие шаблоны переупорядочиваются в DOM.
Дубликаты
-
track byдля любого списка, который может включать повторяющиеся значения. -
track byтакже значительно ускоряет внесение изменений в список. - Если вы не используете
track byв этом случае, вы получите сообщение об ошибке:[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 обрабатывает несколько элементов с помощью ng-repeat-start и 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>
Выход:
| Предметы |
|---|
| Пункт 1: Строка 1 |
| Пункт 1: Строка 2 |
| Пункт 2: Строка 1 |
| Пункт 2: Строка 2 |
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow