2012-02-05 35 views
2

我是triyng将一个对象数组绑定到表的td元素以实现dinamyc列。 的视图模型是:KnockoutJS无容器控制流:绑定表中的td

<script type="text/javascript"> 

function rowObject() { 
    this.chid = 100; 
    this.chname = 'child'; 
    this.numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 
} 

function masterVM() { 
    this.id = 1; 
    this.name = 'xxx'; 
    this.rowObjects = [new rowObject(),new rowObject(), new rowObject()]; 
} 

ko.applyBindings(new masterVM()); 

</script> 

和HTML的观点是:

<tbody data-bind="foreach: rowObjects"> 
    <tr> 
     <td data-bind="text: chid" /> 
     <td data-bind="text: chname" /> 

     <!-- ko foreach: numbers--> 
      <td data-bind="text: $data"></td> 
     <!-- /ko --> 

    </tr> 
</tbody> 

但在$数据有rowObject的一个实例,而不是数数组的一个元素。我试着用模板,但同样的问题。

有一种方法可以实现这种行为?

回答

2

我做了2个例子,说明如何做到这一点。一个用UL和另一个用桌子(只是为了确保我不是坚果)。 http://jsfiddle.net/johnpapa/8wYRf/

我相信你的问题是由使用<td/>而不是<td></td>引起的。这让我偶尔也会发现span。只要记住使用KO数据绑定的开放和关闭标签。

1

你就近了。你只需要确保您指定td既开始和结束标记,如:

<td data-bind="text: chid"></td> 
<td data-bind="text: chname"></td> 

这里有一个例子:http://jsfiddle.net/rniemeyer/2864E/