2015-05-20 42 views
2

我想同時爲兩個不同的項目使用ng-repeat。 我的意思是,NG重複=「mylist1在列表1 & & mylist2在列表2」AngularJS多重重複

我需要使用重複的列表1和列表2。

如何將ng-repeat用於多個項目?

+2

假設他們都是相同的長度,你總是可以通過'mylist2訪問相應的'mylist2'項目[$指數]' – Phil

+0

你想讓它們在同一時間重複嗎?還是你想讓它們一起作爲一個變量重複?我的意思是你想ng-repeat =「mylist1 in list1 && mylist2 in list2」或ng-repeat =「mylist in list1 and list2」? –

+0

我怎樣才能使用$ index?你能解釋更多嗎? – user4773604

回答

1

我認爲你最好創建一個組合列表。例如(在你的控制器)

$scope.lists = list1.map(function(item, i) { 
    return { 
     item1: item, 
     item2: list2[i] || null 
    }; 
}); 

然後,你可以遍歷這個

<div ng-repeat="item in lists"> 
    <p>list1 item: {{ item.item1 }}</p> 
    <p>list2 item: {{ item.item2 }}</p> 
</div> 

或者,你可以只使用$index來引用list2相應的項目。

<div ng-repeat="item1 in list1" ng-init="item2 = list2[$index]"> 
1

使用功能的控制器Concat的他們:

$scope.mergeLists = function (arr1, arr2) { 
    return arr1.concat(arr2); 
} 

然後,你必須:

<div ng-repeat="mylist1 in mergeLists(list1, list2)"> 

Fiddle

+0

這不就是一個長列表嗎? – Phil

+0

@Phil它會,並且這將解決這個問題,如果你想通過列表遍歷項目列表,而不是交織在一起。 –

+0

我感覺OP要他們交織在一起 – Phil

1

我假設你有兩個列表如下:

mylist1=[1,2,3,4,5] 
mylist2=[6,7,8,9,0] 

,並要在它們之間迭代使得產生的元素是

[[1,6,], [2,7], [3,8], [4,9], [5,0]] 

我建議你在lodash.js(或underscore.js)看看zip - 的功能驚人庫幫助你梳理並保持你的頭髮。

Example: 
_.zip(['fred', 'barney'], [30, 40], [true, false]); 
// → [['fred', 30, true], ['barney', 40, false]] 

在這種情況下:

mergedLists = _.zip(mylist1, mylist2) 
ng-repeat="item in mergedLists" 

在你的應用程序js文件,你可以指定荏苒兩個列表的結果,然後用NG-重複遍歷在列表中的值。請注意,列表中的每個項目也是一個列表。

1

你可以利用ng-init

<div ng-repeat="mylist1 in list1" ng-init="i=0;lst2 = list2[i++]"> 

現在你可以使用LST2