如何通过knockout mapping plugin将viewModel.items与serverItems合并?

时间:2012-08-20 22:42:23

标签: knockout-mapping-plugin

此代码不起作用:

var mappingOption = {
     key: function (data) {
        return ko.utils.unwrapObservable(data.id);
    }

ko.mapping.fromJS(serverItems, mappingOption, viewModel.items);

我想要两个项目的UNION(viewModel.items和serverItems)

1 个答案:

答案 0 :(得分:1)

var ClassA = new function(data) {
    ko.mapping.fromJS(data, {
        key: function (item) {
            return ko.utils.unwrapObservable(item.id);
        },
        'items': {
            create: function (itemData) {
                return new ClassB(itemData.data);
            }
        }
    }, self);
}

var ClassB = new function(data) {
    ko.mapping.fromJS(data, {
        key: function(item) {
            return ko.utils.unwrapObservable(item.id);
        };
    ), self);
}

所以ClassA有一个ClassB集合。在创建时,它调用映射函数,该函数对项集合(类型为ClassB)进行创建调用,该集合调用创建类B构造函数,并传入相关数据。

然后,ClassB从构造函数中获取数据,并将其合并到自身中。

我很确定这会因ClassB的键映射而起作用。但是没有时间去测试它; - )