2012-05-13 13 views
9

foreachを使用してレコードを繰り返すことができますが、私はCSS用にグリッドシステムを使用しているため、これらのレコードを4つずつグループ化したいと考えています(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

関連する問題