2014-02-20 53 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> 

试试上面的