AngularJS
ng-repeat
サーチ…
前書き
ngRepeat
ディレクティブは、コレクションからアイテムごとに1回テンプレートをインスタンス化します。コレクションは配列またはオブジェクトでなければなりません。各テンプレートインスタンスは独自のスコープを取得します。ここでは、指定されたループ変数は現在のコレクションアイテムに設定され、 $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 | ブール値 iterator position $index が偶数の場合はtrue(そうでない場合はfalse)。 |
$odd | boolean iterator position $index が奇数の場合はtrue(そうでない場合はfalse)。 |
備考
AngularJSは、これらのパラメータを、ng-repeat式およびng-repeatが存在するHTMLタグ内の任意の場所で使用できる特別な変数として提供します。
オブジェクトのプロパティを反復する
<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
ng-repeat
使用して複数の要素を処理します。
// 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