【问题标题】:Knockout custom mapping for nested objects嵌套对象的剔除自定义映射
【发布时间】:2012-12-02 18:58:51
【问题描述】:

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

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

{
    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);

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

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

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

【问题讨论】:

  • 您可能希望将映射选项传递给您在 childModle 构造函数中进行的 ko.mapping.fromJS 调用。
  • 啊,是的,这是有道理的。谢谢一堆。这是我的第一篇文章。我需要为你做点什么吗?
  • 我会将其移至答案。

标签: knockout.js knockout-mapping-plugin


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 2018-10-31
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2013-08-01
    • 2013-04-11
    • 1970-01-01
    相关资源
    最近更新 更多