Javascript 使用knockout.js绑定复杂的JSON对象

Javascript 使用knockout.js绑定复杂的JSON对象,javascript,json,knockout.js,knockout-mapping-plugin,Javascript,Json,Knockout.js,Knockout Mapping Plugin,我是使用Knockout.js的新手,刚刚使用ko.mapping.js安装/实例化了一个ViewModel绑定,结果发现我得到了一个部分绑定 使用下面列出的示例代码,我们可以看到绑定适用于JSON对象中的简单数据,但不适用于复杂数据。 这里有一个 复杂JSON对象: var json = { "a": "A", "b": [{ "b1": "B1", "b2": "B2", "b3": [{ "one": "

我是使用Knockout.js的新手,刚刚使用
ko.mapping.js安装/实例化了一个
ViewModel
绑定,结果发现我得到了一个部分绑定

使用下面列出的示例代码,我们可以看到绑定适用于JSON对象中的简单数据,但不适用于复杂数据。 这里有一个


复杂JSON对象:

 var json = {
    "a": "A",
    "b": [{
           "b1": "B1",
           "b2": "B2",
           "b3": [{ "one": "One", "two": "Two"}]
         }],
    "c": "C"
 }

要绑定到的HTML元素:

<div data-bind="text: a"></div>
<div data-bind="text: b.b1"></div>
<div data-bind="text: c"></div>

我错过什么了吗

在Knockout.js中,是否可以使用Knockout.mapping.js将复杂的JSON对象绑定到viewmodel

如果不是,使用这个示例…我们如何使用knockout.js绑定这个复杂的JSON对象

我能找到的最近的StackOverflow post就是这个, 我已经尝试了好几个小时使用多种方法,但是没有成功地使用
ko.mapping.js
来进行绑定


不幸的是,Knockoutjs.com文档()没有说明插件是否可以实现这一点。

ko.mapping.js隐式处理简单和复杂的对象。实际上,用于访问嵌套对象的绑定存在问题

如您所见,属性b是一个数组,因此ko.mapping将其转换为ObservalArray.so绑定如下:-

<div data-bind="text: a"></div>
<div data-bind="text: b()[0].b1"></div> //As b is array
<div data-bind="text: c"></div>

地图的可视化也非常有用。
<div data-bind="text: a"></div>
<div data-bind="text: b()[0].b1"></div> //As b is array
<div data-bind="text: c"></div>
{
"a": "A",
"b": [
    {
        "b1": "B1",
        "b2": "B2",
        "b3": [
            {
                "one": "One",
                "two": "Two"
            }
        ]
    }
],
"c": "C",
"__ko_mapping__": {
    "ignore": [],
    "include": [
        "_destroy"
    ],
    "copy": [],
    "observe": [],
    "mappedProperties": {
        "a": true,
        "b[0].b1": true,
        "b[0].b2": true,
        "b[0].b3[0].one": true,
        "b[0].b3[0].two": true,
        "b[0].b3": true,
        "b": true,
        "c": true
    },
    "copiedProperties": {}
}
}