2014-02-20 54 views
0

我會如何在Knockout中完成這樣的事情?鑑於來源是這樣的[「一」,「二」,「三」]敲擊數據 - 綁定三個一次

<div> 
    <p> 
     <div> 
      <div>One</div> 
      <div>Two</div> 
      <div>Three</div> 
     </div> 
     <div> 
      <div>Four</div> 
      <div>Five</div> 
      <div>Six</div> 
     </div> 
    </p> 
</div> 
+0

什麼你在這裏做的是重新建立一個表div的形式。在桌子設計的黑暗時代,我們需要這樣做。你應該在數組中每行創建一個div並使用CSS來修復佈局。也在div的div無效 – Anders

回答

0

我創建了一個的jsfiddle,以顯示如何一個樣本可實現:http://jsfiddle.net/bxfXd/3509/

標記:

<div class="outer" data-bind="foreach:itemsGrouped"> 
    <div class="inner"> 
     <!-- ko foreach: $data --> 
      <div class="main" data-bind="text:$data"></div> 
     <!-- /ko --> 
    <div> 
</div> 

JS:

Array.prototype.chunk = function (chunkSize) { 
    var array = this; 
    return [].concat.apply([], 
    array.map(function (elem, i) { 
     return i % chunkSize ? [] : [array.slice(i, i + chunkSize)]; 
    })); 
} 

var SimpleListModel = function(items) { 
    var self = this; 

    self.items = ko.observableArray(items); 

    self.itemsGrouped = ko.computed(function() { 
     return self.items().chunk(3); 
    }); 
}; 

ko.applyBindings(new SimpleListModel(
          ["One", "Two", "Three", "Four", "Five", "Six"])); 

作爲參考,塊方法是從here採取張貼@ninjagecko

+0

正是我在找的東西。謝謝! – user3072624

0
<div data-bind="foreach:someArrayContainingTheValues"> 
    <div data-bind="text:$data"></div> 
</div> 

試試上面的