当为 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(数据,映射);
这假定数据包含一个包含集合的属性“Items”。但是如果 data 只是一个 JSON 数组呢?如何将我的创建函数挂钩到传入数据的顶级根中的项目?
从查看文档来看,映射对象中的键似乎可以是要作用的数据的属性名称,也可以是包含、忽略、复制之一。由此,我看不出如何实现我想要的,除非我将传入的 JSON 包装到一个具有属性的对象中,映射它,然后解包结果。