2014-10-27 94 views
0

我有一個對象我試圖遍歷和具有麻煩嵌套ng-repeats嵌套陣列NG-重複錯誤:[ngRepeat:愚弄]

$scope.report_data = { 
    data [ 
    system_0: [ 
     0: "string", 
     1: 435, 
     2: "another value" 
    ] 
    ], 
    headers [ 
    0: [ 
     0:"title" 
     1: "CHA" 
    ] 
    ] 
} 

我試圖建立一個表標題因爲每個數據都被映射到標題。

我現在所擁有的是什麼

<table> 
    <thead> 
    <tr> 
     <th ng-repeat="header in report_data.headers">{{ header.0 }}</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td ng-repeat="system in report_data.data"> 
     <span ng-repeat="_item in system">{{ _item }}</span> 
     </td> 
    </tr> 
    </tbody> 
<table> 

但我不能每個項目迭代中的每個系統,並將其添加爲一列。我收到的錯誤是Error: [ngRepeat:dupes]

迭代嵌套數組的最佳方式是什麼?

+0

可能重複的[角納克重複錯誤「中的中繼器不允許重複。」](http://stackoverflow.com/questions/16296670/angular-ng-repeat-error-duplicates-in -re-repeater-are-not-allowed) – PSL 2014-10-27 20:39:24

+0

另一個http://stackoverflow.com/questions/20452223/ng-repeat-not-working-over-collections-that-c​​ontains-dupes – PSL 2014-10-27 20:39:52

+0

http:// stackoverflow。 COM /問題/ 26152576/ngrepeatdupes-重複式中繼器,用套式ngrepeat和空串/ 26152601#26152601 – PSL 2014-10-27 20:41:19

回答

2

默認情況下,ng-repeat使用整個對象的散列來跟蹤插入/刪除,以便優化DOM操作。 T 他必須是唯一的,否則會失敗。

因此具有相同屬性和值的兩個對象將發生碰撞。

您可以使用track by語法明確要跟蹤哪些屬性,但同樣,這必須是唯一的。

作爲最後的手段,您可以使用track by $index來解決重複條目。

ng-repeat="widget in widgets track by $index"