Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除:将映射扩展到复杂JSON_Javascript_Knockout.js_Knockout Mapping Plugin - Fatal编程技术网

Javascript 敲除:将映射扩展到复杂JSON

Javascript 敲除:将映射扩展到复杂JSON,javascript,knockout.js,knockout-mapping-plugin,Javascript,Knockout.js,Knockout Mapping Plugin,我从服务器接收到一个复杂的JSON。让它成为下一个: var data = [{ name: "name1", items:[ { name:"name11", subItems:[{ name:"name111", children[ {id:1,name:"child1111",status:"good"},

我从服务器接收到一个复杂的JSON。让它成为下一个:

var data = [{
    name: "name1",
    items:[
        {
        name:"name11",
        subItems:[{
                name:"name111",
                children[
                    {id:1,name:"child1111",status:"good"},
                    {id:2,name:"child1112",status:"bad"},
                    {id:3,name:"child1113",status:"good"}
                ]},
                {
                name:"name112",
                children[
                    {id:4,name:"child1121",status:"good"}]
                }]
        },
        {
        name:"name12",
        subItems:[{
                name:"name121",
                children[
                    {id:5,name:"child1211",status:"bad"}]
                }]
        }]
    },
    {
    name: "name2",
    items:[
        {
        name:"name21",
        subItems:[{
                name:"name111",
                children[
                {id:7,name:"child2111",status:"good"}
                ]}]
        }]
    }];
所以我有一个对象列表,每个对象都包含名称和属性项。Items是类似对象列表的属性,每个对象都包含name和subItems属性。subItems属性与previous相同,并具有name和children属性。子对象是我的实体列表。我用于填充我的ViewModel。 首先,我无法想象如何在实体中设置为key
id
。我想知道如何“潜水”到它。此外,我需要扩展我的实体。添加compute属性,如下例所示:

computProp: ko.computed(function() {return name+status;})
我不想创建js类,因为我看不到这种情况下映射的好处。在这种情况下,我可以实现手动映射。这对我来说会更清楚

因此,欢迎任何想法、建议或批评


PS:我已经搜索/阅读了类似的

您必须显式声明children viewmodel才能获得此行为,但您仍然可以从完成所有映射中获益


您必须显式声明childrenviewmodel才能获得此行为,但您仍然可以从完成所有映射中获益


因此,当我得到正确的答案时,我需要通过循环抛出第一级和第二级,并映射
子级
?好的,但是在这种情况下我如何更新它们?再去扔圈?没有看到任何优点和缺点-代码看起来很复杂,然后手动更新。您只需要映射子数组,其余由框架完成。所以不,它并不比手册更复杂,我还是搞不懂。JSFIDLE中的结果在这两个示例中都是空的。奇怪的是,只在FF中测试,但在其他浏览器中应该不会有问题,请检查错误控制台。由于映射插件只能创建叶,所以它稍微复杂一点。你需要像这样分别映射每个级别,以便我得到正确的结果-我需要通过循环抛出第一级和第二级,并映射
子级
?好的,但是在这种情况下我如何更新它们?再去扔圈?没有看到任何优点和缺点-代码看起来很复杂,然后手动更新。您只需要映射子数组,其余由框架完成。所以不,它并不比手册更复杂,我还是搞不懂。JSFIDLE中的结果在这两个示例中都是空的。奇怪的是,只在FF中测试,但在其他浏览器中应该不会有问题,请检查错误控制台。由于映射插件只能创建叶,所以它稍微复杂一点。你需要将每个关卡分别映射为
ChildViewModel = function(data) {
    ko.mapping.fromJS(data, {}, this);
    this.computProp = ko.computed(function() {
        return this.name() + this.status();
    }, this);
};