knockout.js - 嵌套对象的 knockout 自定义映射

标签 knockout.js knockout-mapping-plugin

我有一个 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",
        }
    ]
}

我正在尝试使用 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
        }
    ]
}

我的代码现在看起来像这样:
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);

这仅适用于顶级 child 。 2-n 级子级不是使用我的映射创建的。

* 我的模型可以有无限数量的嵌套层 *

我的问题是如何让 child 创建适用于所有嵌套的 child ?

最佳答案

您可能希望将映射选项传递给 ko.mapping.fromJS您在 childModle 内调用的电话构造函数。

关于knockout.js - 嵌套对象的 knockout 自定义映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13884377/

相关文章:

javascript - 如何在 KnockoutJS 中用 {{}} 样式绑定(bind)替换 data-bind 标签?

javascript - 在 Knockout.js 中删除数据后刷新 ViewModel

javascript - knockout 给出先前选择的值

javascript - 具有命名模板的 Knockout 3.2 组件?

javascript - Knockoutjs 无法解析绑定(bind)。消息: SyntaxError: Unexpected token };

javascript - 使用 TypeScript 和 RequireJS 进行knockout.mapping

css - JQuery Mobile + Knockout,CSS 样式失败

c# - 序列化包含数组的对象

asp.net-mvc-4 - 将复杂的 View 模型 POST 到 Controller

javascript - 尝试使用映射将数组从 JSON 映射到淘汰赛