サーチ…


前書き

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-repeatng-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