2015-11-13 48 views
0

我有一個看起來像對象的數組:在陣列添加項目反覆NG重複

{ 
    id: "1234", 
    general: { 
     title: "lorem", 
     body: "..." 
    } 
}, ... 

這個數據正在顯示與NG-重複:

<ul> 
    <li ng-repeat="item in items track by $index"> 
     <h2>{{item.general.title}}</h2> 
     <p>{{item.general.body}}</p> 
    </li> 
</ul> 

現在我想要實現的是將項目添加到此列表中。每15個項目我想添加一個新的項目數組顯示在我的重複。該項目具有不同的結構:

<li> 
    <p>a text</p> 
    <a>a link</a> 
</li> 

到目前爲止,我得到這個在我的控制器:

var addLinks = function addLinks(interval, array) { 

    var newArray = array.slice(); 

    for(var i = interval - 1; i < array.length; i += interval) { 
     newArray.splice(i, 0, { 
      // Here comes the item to add 
     }); 
    } 

    return newArray; 
}; 

$scope.items = addLinks(15, articleService.articles); 

我的問題是我怎麼添加的項目,而不只是複製HTML?

+0

你的問題到底是什麼?任何錯誤? –

+0

@AndreKreienbring編輯我的帖子 – AC3

回答

1

你可以使用NG-重複啓動和NG-重複結束,只有當你在$指數+ 1%15,這樣添加其他元素:

<ul> 
    <li ng-repeat-start="item in vm.array track by $index">{{item.a}}</li> 
    <li ng-repeat-end ng-if="$index>0 && $index+1 % 15 == 0"></li> 
</ul> 

這裏一個plunkr:http://plnkr.co/edit/qwkXGcBcxlDy0hNHTvAo?p=preview

0

我有問題的項目添加附加屬性:

var addLinks = function addLinks(interval, array) { 
    //don't return a new array! 
    //var newArray = array.slice(); 

    for(var i = interval - 1; i < array.length; i += interval) { 
     array[i].text = "foo"; 
     array[i].link = "bar"; 
    } 

    return array; 
}; 

而在你的看法:

<ul> 
    <li ng-repeat="item in items track by $index"> 
     <h2>{{item.general.title}}</h2> 
     <p>{{item.general.body}}</p> 

     <p ng-show="item.text">item.text</p> 
     <p ng-show="item.link">item.link</p> 

    </li> 
</ul> 
+0

這也適用,但它需要更多的工作,因爲我的數據數組來自api。 – AC3