Массив отображения нокаута с различными типами моделей представления

Наличие массива различных типов элементов:

var items = [{{type:t1,text:"abc"},{type:t2,data:"123"}}]

и посмотреть модели:

function T1VM(t1) { ... }
function T2VM(t2) { ... }

Как я могу использовать плагин сопоставления для сопоставления элементов с наблюдаемым массивом соответствующих моделей представления?


person Andreas Zita    schedule 30.03.2013    source источник
comment
Что вы имеете в виду под соответствующей моделью представления? Вы хотите, чтобы первая модель представления была сопоставлена ​​со второй? Или второе к первому? Или у вас есть третья модель представления, на которую вы хотите сопоставить две другие?   -  person PatrickSteele    schedule 30.03.2013
comment
Объекты с типом: t1 должны быть сопоставлены с T1VM и т. д.   -  person Andreas Zita    schedule 30.03.2013


Ответы (1)


Это было слишком просто!

var mapping = {
    create: function (options) {
        if (options.data.type == "T1")
            return new T1VM(options.data);
        else if (options.data.type == "T2")
            return new T2VM(options.data);
    }
};

А потом:

ko.mapping.fromJS(items, mapping);
person Andreas Zita    schedule 30.03.2013