5

私は次のような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レベルの子は、私のマッピングを使用して作成されていません。

*私のモデルはネストされたレベルを無限に持つことができます*

私の質問は、ネストされたすべての子に子の作成を適用させるにはどうすればよいですか?

4

1 に答える 1

6

コンストラクター関数ko.mapping.fromJS内で行う呼び出しにマッピングオプションを渡す必要があります。childModle

于 2012-12-15T15:11:56.157 に答える