2016-01-13 88 views
1

我有這個對象數組(左側),我想用這個(右側)使用ng-repeat索引它。AngularJS嵌套ng重複索引

i j  | x 
[    |  
0   | 0 x = i 
1   | 1 
2   | 2 
3 [   | 
    0  | 3 x = i + j 
    1  | 4 
    2  | 5 
    ]   | 
4   | 6 x = ? 
5 [   | 
    0  | 7 x = ? 
    1  | 8 
    2  | 9 
    ]   | 
]    | 

它還挺使用$父的作品。$指數+ $指數嵌套數組中,但是這隻能在第一個嵌套數組作爲未來的人都會有自己的$指數從0開始再次所以5 + 0 = 5,而不是7.此外,主數組的索引將不計入後面的嵌套數組元素。

我真正需要的是一個計數器,我可以在{{}}塊中顯示。

<div ng-repeat-start="item in array track by $index"> 
    {{$index}} 
</div> 
<div ng-if="isArray(item)" ng-repeat="subItem in item track by $index"> 
    {{$parent.$index+$index}} 
</div> 
<hr ng-repeat-stop> 

我在想,也許存儲的「x」爲從陣列中的每個項目成員可以工作,但後來每次我都會從數組中刪除一個項目,我將不得不再次處理陣列修復「x」。

編輯: 我的數組實際上是購物車的內容。數組中的每個項目都是一個Product,但其中一些項目可以是一個包含折扣更多產品的Package。

+1

你想扁平你陣列嗎? – Danscho

+0

我不能展平數組,因爲它包含具有許多成員的對象,並且這些對象的某些成員是對象數組。 –

+1

@ Adi.S實際上你錯了:「但是每次我從數組中刪除一個項目時,我將不得不再次處理數組以修復」x「」。看看這個簡短的例子:http://plnkr.co/edit/87T7jQAMHJq1OE33ZFYx?p=preview –

回答

1

經過一些反思整個問題之後,我得出結論,使用ng-repeats索引這個嵌套數組會使頁面變得過於複雜,並且通過展平數組,我會解決比我創建的更多問題。

TL:DR我已經放平了陣列,通過這樣做,我簡化了更多的頁面,只需添加一些新功能來處理包裹的折扣。