KnockoutJS无容器控制流:在表中绑定td

时间:2012-02-05 14:43:51

标签: knockout.js

我很想将一个对象数组绑定到一个表的td元素来实现dinamyc列。 视图模型是:

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

但是在$ data中有一个rowObject实例,而不是number数组的元素。我尝试了模板,但同样的问题。

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

2 个答案:

答案 0 :(得分:2)

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

我认为您的问题是由使用<td/>代替<td></td>引起的。偶尔也会抓住我的跨度。只需记住使用带有KO数据绑定的打开和关闭标记。

答案 1 :(得分:1)

你很亲密。您只需确保使用开始和结束标记指定td,如:

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

以下是一个示例:http://jsfiddle.net/rniemeyer/2864E/