【问题标题】:Knockout.Mapping create mapping hook for simple JSON arrayKnockout.Mapping 为简单的 JSON 数组创建映射钩子
【发布时间】:2012-09-28 05:27:59
【问题描述】:

在为 knockout.js 使用 knockout.mapping 插件时,我可以自定义集合中项目的创建方式,如下所示:-

var ItemModel = function (data) {
    ko.mapping.fromJS(data, {}, this);
    this.FooProperty = ...;
};

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

this.Items = ko.mapping.fromJS(data, mapping);

这假定数据包含一个包含集合的属性“Items”。但是如果 data 只是一个 JSON 数组呢?如何将我的创建函数挂钩到传入数据的顶级根中的项目?

从查看文档来看,映射对象中的键似乎可以是要作用的数据的属性名称,也可以是包含、忽略、复制之一。从此,我看不出如何实现我想要的,除非我将传入的 JSON 包装到具有属性的对象中,映射它,然后解包结果。

【问题讨论】:

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


    【解决方案1】:

    您可以在映射对象的顶层放置一个create 函数来处理根对象:

    喜欢:

    var mapping = {
        create: function(options) {
    
        }
    };
    

    或者,您可以像这样传递它:

    ko.mapping.fromJS({ Items: data });
    

    但听起来你可能试图避免这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多