使用映射插件在KnockoutJS中扩展视图模型

时间:2012-06-13 22:37:22

标签: javascript knockout.js knockout-mapping-plugin

我有一个来自服务器的视图模型像json这样

{
    Project: {
        Items: {
            ItemA: {
                Tags: [
                    ...
                ]
            },
            ItemB: ...
        }
    }
}

然后我将这个对象与knockout.mapping插件绑定,但我需要ItemA,例如,有一个额外的Marked observable,这样我在标记中可以做类似的事情

<ul data-bind="foreach: Project.Items">
    ...            
    <input type="checkbox" data-bind="checked: Marked">

我尝试在映射过程中使用create选项(如此处ko.mapping create function, extend object所示),但我无法弄清楚如何嵌套create方法来扩展对象Project.Items。

我一直在尝试像这样的映射

var mappings = {
    'Items': {
        create: function (options) {
            return $.map(options.data, function(obj) {
                return new Item(obj);
            });
        }
    }
}

1 个答案:

答案 0 :(得分:2)

解决方案是这种绑定

var mappings = {
    'Items': {
        create: function (options) {
            return new Item(options.data);
        }
    }
};