2012-05-13 19 views
9

Posso recuperare i miei record utilizzando foreach, ma poiché sto usando un sistema di griglia per CSS, voglio raggruppare questi record quattro alla volta (div class = "column") per ogni (div class = "row").Come ottenere Knockout per gruppo foreach

Non vedo un buon esempio su come avvolgere ogni record in questo modo.

Qualsiasi aiuto?

risposta

18

Quindi non sono completamente sicuro di quello che si sta cercando ma si potrebbe raggruppare manualmente in questo modo.

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); 

Spero che questo aiuti.

+0

Grazie! Funziona perfettamente per gli array statici. Ma quando uso ko.observableArray per gli oggetti, non succede nulla. Aggiornamento – Chris

+1

: la modifica degli elementi in elementi() ha risolto il problema. – Chris

+0

Sì, un observableArray è solo una funzione che avvolge un array statico in modo che l'esecuzione restituisca l'array statico all'interno. – madcapnmckay

Problemi correlati