AnglarJS ng-repeatコマンドでは、track byサブステートメントを使って重複データを解決します。エラー問題を解決します。


本論文の例は、アングラルJS ng-repeat命令において、トラックbyサブステートメントを使用して重複データトラバースエラー問題を解決することを述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
私たちは、JavaScript配列を遍歴するために、ng-repeatコマンドを使用することができます。配列に重複要素がある場合、AnglarJSはエラーを報告します。
Error:[gRepeat:dupes]Duplictes in a repeat are not allowed.Use'track by'expression to specify unique keys.Repeat:user:user in users,Duplicate key:number:1。下記のコードはエラーとなります。

<html>
 <head>
  <script src="angular-1.2.2/angular.js"></script>
  <script>
     function rootController($scope,$rootScope,$injector)
     {
      $scope.dataList = [1,2,1];
     }
  </script>
 </head>
 <body ng-app ng-controller="rootController">
    <div ng-repeat="data in dataList">
      {{data}}
    </div>
 </body>
</html>

これは、同じIdのオブジェクトが2つ存在することができないからです。
For example:item in items is equivalent to item-initems track by$id.This implies the DOM elemens will be assited by ity in the array.
数字や文字列などの基本的なデータの種類にとって、そのIDは自身の値です。したがって、配列には同じ数字が2つ存在することは許されません。このエラーを回避するためには、自分のtrack by表現を定義する必要があります。
//業務上自分で唯一のidを生成する
item in items track by item.id
//または直接循環インデックス変数$indexを持ってきて使用します。
item in items track by$index
javascriptオブジェクトタイプのデータであれば、たとえ内容が同じであっても、ng-repeatは同じ対象とは思えない。上のコードの中のdataListを入れると、エラーが発生しません。たとえば$scope.data List="{age":10]、{age];
AnglarJSに関する詳細について興味がある読者は、このサイトのテーマを見ることができます。
この記事で皆さんのAnglarJSプログラムの設計に役に立ちますように。