【问题标题】:Extending a view model in KnockoutJS with mapping plugin使用映射插件在 KnockoutJS 中扩展视图模型
【发布时间】:2012-06-16 23:15:52
【问题描述】:

我有一个来自服务器的视图模型,像这样的 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);
            });
        }
    }
}

【问题讨论】:

  • 您是否需要使用类似于此的映射插件进行嵌套 - stackoverflow.com/questions/9951521/…
  • 是的,非常喜欢,但是我需要覆盖Project的Items属性中对象的创建,所以我想问题是我如何覆盖observableArray中的项目的创建跨度>

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


【解决方案1】:

解决方案是这个绑定

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

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    相关资源
    最近更新 更多