1

更新:似乎我忘记了最重要的信息。这不是在 html 文件中,而是在 xsl 文件中。ko 评论标签被删除,这就是为什么“名称”不存在的原因。我会将 Damien 的回复标记为答案,以表彰他通过访问 JSFiddle 引导我朝着正确的方向前进。谢谢。

原始问题:

有什么方法可以从带有 knockout.js 的表中的 JSON 对象绑定内部数组?我尝试了很多不同的方法,但似乎没有一个有效。有两个类似的问题:

敲除数组

使用 Knockout foreach 绑定嵌套数组

但是,在这两种情况下,它们都使用容器绑定。我需要使用无容器绑定,这似乎不起作用。

这是一个简化的代码示例:

var 报告数据 = {[
    “类别”:“第一类别”,
    “身份证”:1,
    “项目”: [
        {“姓名”:“名字”},
        {“姓名”:“第二个姓名”}
        ]
    }, {
    “类别”:“第二类”,
    “身份证”:2,
    “项目”: [
        {“姓名”:“名字”},
        {“姓名”:“第二个姓名”}
        ]
    }];

绑定代码是基本的(摘录):

var viewModel = 函数() {
        变种自我=这个;
        self.reportData = ko.observableArray();
    }

var vm = new viewModel();
vm.reportData(数据);
ko.applyBindings(vm);

我需要的是:

<tbody data-bind="foreach: reportData">
    <tr>
        <td data-bind="text: 类别"></td>
    </tr>
    <!-- ko foreach: 项目 -->
    <tr>
        <td data-bind="text: Name"></td>
    </tr>
    <!-- /ko -->
</tbody>

我尝试了许多不同的方法来获取内部数组数据,但我总是收到未定义“名称”的错误。我在控制台中确认我得到了正确的数据,并且外部对象数组值显示没有问题。

访问此内部数组并在具有内部数组的无容器绑定的表中显示的正确方法是什么?

4

1 回答 1

2

请你看看这个小提琴,告诉我什么不起作用。因为对我来说效果很好。

看法 :

<table>
    <tbody data-bind="foreach: reportData">
        <tr>
            <td data-bind="text: Category"></td>
        </tr>
        <!-- ko foreach: Items -->
        <tr>
            <td data-bind="text: Name"></td>
        </tr>
        <!-- /ko -->
    </tbody>
</table>

JS:

data =  [{
        "Category": "First Category",
            "Id": 1,
            "Items": [{
            "Name": "First Name"
        }, {
            "Name": "Second Name"
        }]
    }, {
        "Category": "Second Category",
            "Id": 2,
            "Items": [{
            "Name": "First Name"
        }, {
            "Name": "Second Name"
        }]
    }]
;


var viewModel = function () {
    var self = this;
    self.reportData = ko.observableArray();
}

var vm = new viewModel();
vm.reportData(data);
ko.applyBindings(vm);
于 2013-07-01T16:22:15.927 回答