2012-05-13 15 views
9

我可以得到我的記錄重複使用foreach,但因爲我使用的是CSS的網格系統,我想將這些記錄一次四個(div class =「column」)爲每個(div class =「row」)。如何獲得敲羣組foreach

我沒有看到一個很好的例子,如何用這種方式來包裝每個記錄。

任何幫助?

回答

18

所以我不完全確定你在做什麼,但你可以像這樣手動分組。

http://jsfiddle.net/madcapnmckay/hFPgT/1/

<div data-bind="foreach: grouped" > 
    <div data-bind="foreach: $data" class="row"> 
     <div class="column" data-bind="text: text"></div> 
    </div> 
</div>  

this.grouped = ko.computed(function() { 
     var rows = [], current = []; 
     rows.push(current); 
     for (var i = 0; i < this.items.length; i += 1) { 
      current.push(this.items[i]); 
      if (((i + 1) % 4) === 0) { 
       current = []; 
       rows.push(current); 
      } 
     } 
     return rows; 
}, this); 

希望這有助於。

+0

謝謝!這對靜態數組非常有用。但是當我爲物品使用ko.observableArray時,沒有任何反應。 – Chris

+1

更新:將項目更改爲項目()修復了該問題。 – Chris

+0

是的,一個observableArray只是一個包裝靜態數組的函數,所以執行它會返回裏面的靜態數組。 – madcapnmckay