1. ホーム
  2. javascript

[解決済み] ngRepeatの'track by'表現について理解する

2022-01-25 14:56:49

質問

の仕組みがよくわからないのですが。 によるトラック の表現は、angularjs の ng-repeat で動作します。ドキュメントが非常に少ないです。 http://docs.angularjs.org/api/ng/directive/ngRepeat

この2つのコードの違いは何なのか、説明できますか? データバインディング などの関連する部分を教えてください。

を使っています。 track by $index

<!--names is an array-->
<div ng-repeat="(key, value) in names track by $index">
  <input ng-model="value[key]">                         
</div>

なし(出力は同じ)

<!--names is an array-->
<div ng-repeat="(key, value) in names">
   <input ng-model="value[key]">                         
</div>

解決方法は?

あなたは track by $index データソースに重複した識別子がある場合

$scope.dataSource: [{id:1,name:'one'}, {id:1,name:'one too'}, {id:2,name:'two'}]

idを識別子として使用する場合、このコレクションを反復することはできません(重複するid:1)。

動作しません。

<element ng-repeat="item.id as item.name for item in dataSource">
  // something with item ...
</element>

を使用することができます。 track by $index :

<element ng-repeat="item in dataSource track by $index">
  // something with item ...
</element>