knockout.js嵌套的foreach引用彼此

时间:2014-04-22 18:39:09

标签: javascript knockout.js

我正在尝试填写表格的行和单元格,如下所示:

<tbody data-bind="foreach: {data: rows, as: 'row'}">
    <tr data-bind="foreach: {data: row, as: 'cell'}">
        <td data-bind="text: cell"></td>
    </tr>
</tbody>

将此作为我的行var:

self.rows = ko.observableArray([
            [
                ['Test', '10', '100', '98', '10', '15']
            ],
            [
                ['Test2', '10', '100', '98', '10', '20']
            ]
]);

这会填充正确的行数,但只有第一个TD填充了数组的全部内容。

结果:

<tbody data-bind="foreach: {data: rows, as: 'row'}">
    <tr data-bind="foreach: {data: row, as: 'cell'}">
        <td data-bind="text: cell">Test,10,100,98,10,15</td>
    </tr>

    <tr data-bind="foreach: {data: row, as: 'cell'}">
        <td data-bind="text: cell">Test2,10,100,98,10,20</td>
    </tr>
</tbody>

我做错了什么?

2 个答案:

答案 0 :(得分:3)

你有三个级别的数组,你只是深度迭代两个级别。如果您将rows数据更改为仅嵌套两个级别,则应按预期工作:

self.rows = ko.observableArray([
    [
        'Test', '10', '100', '98', '10', '15'
    ],
    [
        'Test2', '10', '100', '98', '10', '20'
    ]
]);

JSFiddle:http://jsfiddle.net/Zj2qN/

答案 1 :(得分:1)

你有一个三级数组。你确定需要吗?

如果是这样,你需要再嵌套一个foreach绑定。

我不这么认为,我想你希望你的阵列看起来像这样:

self.rows = ko.observableArray([[1,2,3],[4,5,6]]);