针对嵌套对象的Knockout自定义映射

use*_*839 5 knockout-mapping-plugin knockout.js

我有一个JSON对象,如:

{
    id:"a",
    type:"simple",
    children:[
        {
            id:"a.1",
            type:"simple",
            children:[
                {
                    id:"a.1.1",
                    type:"simple",
                },
                {
                    id:"a.1.2",
                    type:"simple",
                }
            ]
        },
        {
            id:"a.2",
            type:"simple",
        },
        {
            id:"a.2",
            type:"simple",
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用knockout映射插件为所有子对象创建自定义选定属性,如下所示:

{
    id:"a",
    type:"simple",
    children:[
        {
            id:"a.1",
            type:"simple",
            selected:true,
            children:[
                {
                    id:"a.1.1",
                    type:"simple",
                    selected:true
                },
                {
                    id:"a.1.2",
                    type:"simple",
                    selected:true
                }
            ]
        },
        {
            id:"a.2",
            type:"simple",
            selected:true
        },
        {
            id:"a.2",
            type:"simple",
            selected:true
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的代码目前看起来像这样:

getMapping : function() {
    var childModle = function(data) {
        data.selected = false;
        ko.mapping.fromJS(data, {}, this);
        };
        var mapping = {
            "children" : {
                create : function(options) {
                    return new childModle(options.data);
                }
            }
        };
    return mapping;
},

var mapping =  this.getMapping();
var mappedModel = ko.mapping.fromJS(model, mapping);
Run Code Online (Sandbox Code Playgroud)

这仅适用于顶级儿童.不使用我的映射创建2-n级子级.

*我的模型可以有无限量的嵌套级别*

我的问题是如何让孩子们创建申请所有嵌套孩子?

RP *_*yer 6

您可能希望将映射选项传递ko.mapping.fromJS给您在childModle构造函数中进行的调用.