2013-02-27 64 views
1

我是AngularJs的新手。我想使用納克重複如對(I = 0;我< ele.length; I + = 2)AngularJs ng-repeat更改循環增量

我有4列,其中我將使用表NG-重複

<table> 
<tr ng-repeat="i in elements"> 
    <th>{{i.T}}</th> 
    <td>{{i.V}}</td> 
    <th>{{elements[($index+1)].T}}</th> <!-- This should be next element of the elements array --> 
    <td>{{elements[($index+1)].V}}</td> <!-- This should be next element of the elements array --> 
</tr> 
</table> 

我需要在一次迭代訪問2個元素,迭代增量應該是2

我希望這是有道理的。請幫幫我。

請檢查這個網站觀點Plunker

+0

你會好起來:

.filter("myFilter", function(){ return function(input, test){ var newArray = []; for(var x = 0; x < input.length; x+=2){ newArray.push(input[x]); } return newArray; } }); 

的jsfiddle? – 2013-02-27 13:10:02

+0

@ArunPJohny,你的意思是重新排列數組的元素?我從API請求中獲取該數組,並將其用於許多其他地方。因此,修改ng-repeat時幾乎沒有問題 – Gihan 2013-02-27 13:22:51

+2

解決方案是使用http://jsfiddle.net/gwfPh/ – 2013-02-27 13:24:48

回答

4

您可以創建創建一個連陣列的複製過濾器:如果模型對象改變http://jsfiddle.net/gwfPh/15/

+0

謝謝@Mathew,它不能正常工作。如果你可以在你的JsFiddle例子的結果視圖中看到,第二行是錯誤的,其他的沒問題,我試圖找出那裏有什麼故障,但沒有運氣。 – Gihan 2013-02-28 09:53:06

+0

哎呀,你說得對。 jsFiddle。 – 2013-02-28 16:08:19

+0

完美!,謝謝@Mathew – Gihan 2013-03-01 04:59:37

1

所以,如果我理解正確的話,你想走路的名單和候補th和td的同時迭代。 如果是這樣,你可以使用一個NG-開關:

<table> 
    <tr ng-repeat="i in elements" ng-switch on="$index % 2"> 
    <th ng-switch-when="0">{{i.T}}</th> 
    <td ng-switch-when="1">{{i.V}}</td>  
    </tr> 
</table> 

See Plunker here

+0

謝謝@Sebastien但是我的要求有點不同,請檢查這個Plunker http://plnkr.co/edit/PSwPWqKwqp0vzFJTO8eh?p=preview。這應該是我的結果。 – Gihan 2013-02-27 14:41:03

0

一個解決方案,我能想到的涉及數據模型

模板

<table ng-app="test-app" ng-controller="TestCtrl"> 
<tr ng-repeat="i in items"> 

    <th>{{i.T1}}</th> 
    <td>{{i.V1}}</td> 
    <th>{{i.T2}}</th> 
    <td>{{i.V2}}</td> 
</tr> 
</table> 

控制器

變化
testApp.controller('TestCtrl', ['$scope', function($scope) { 
    var elements=[]; //This is the dynamic values loaded from server 
    for (var i = 0; i < 5; i++) { 
     elements.push({ 
      T : i, 
      V : 'v' + i 
     }); 
    } 

    //A converter which convert the data elements to a format we can use 
    var items = []; 
    var x = Math.ceil(elements.length/2); 
    for (var i = 0; i < x; i++) { 
     var index = i * 2; 
     var obj = { 
      T1 : elements[index].T, 
      V1 : elements[index].V 
     } 
     if (elements[index + 1]) { 
      obj.T2 = elements[index + 1].T; 
      obj.V2 = elements[index + 1].V 
     } 
     items.push(obj) 
    } 

    $scope.items = items; 

}]); 

演示:Fiddle

另一個稍微不同的方法可以找到here