Отключение пользовательского сопоставления для вложенных объектов

У меня есть объект 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-го уровня не создаются с использованием моего отображения.

* Моя модель может иметь бесконечное количество вложенных уровней *

Мой вопрос: как я могу заставить детей создавать приложения для всех вложенных детей?


person user1904839    schedule 14.12.2012    source источник
comment
Вы хотели бы передать параметры сопоставления в вызов ko.mapping.fromJS, который вы делаете внутри конструктора childModle.   -  person RP Niemeyer    schedule 14.12.2012
comment
Ах, да, это имеет смысл. Огромное спасибо. Это мой первый пост. Мне нужно что-то сделать для тебя?   -  person user1904839    schedule 15.12.2012
comment
Я перенесу это в ответ.   -  person RP Niemeyer    schedule 15.12.2012


Ответы (1)


Вы хотели бы передать параметры сопоставления в вызов ko.mapping.fromJS, который вы делаете внутри функции конструктора childModle.

person RP Niemeyer    schedule 15.12.2012