击倒映射数组与不同类型的视图模型

Knockout mapping array with different types of view models

本文关键字:同类型 视图 模型 映射 数组      更新时间:2023-09-26

包含不同类型的项的数组:

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

和视图模型:

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

如何使用映射插件将项目映射到匹配视图模型的可观察数组?

这太容易了!

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