【发布时间】:2015-01-09 10:23:37
【问题描述】:
我正在使用带有mapping plugin 的淘汰赛,这样我就可以编写如下代码:
function ContactViewModel() {
//other properties...
this.emails = ko.observableArray();
}
function ContactEmailViewModel() {
//other properties...
this.address = ko.observable();
}
var koContactMap = {
'emails': {
create: function (options) {
return new ContactEmailViewModel(options.data);
}
}
};
var model = new ContactViewModel();
ko.mapping.fromJS([JSON data from web service], koContactMap, model);
在英语中,我有contacts 和emails,而contact 有emails。
这非常有效,我可以加载联系人并填充数据和电子邮件,并且电子邮件的类型为 ContactEmailViewModel,如我所愿。
但我感到困惑的是:为什么 map create 方法返回一个 singular 电子邮件对象,而不是一个 collection 电子邮件对象。 emails 属性是一个集合,但似乎是通过返回单个对象来填充的,并且被多次调用,每个成员调用一次。
这会正确填充emails 属性。但是现在我想将 emails 从一个数组更改为一个 EmailsList 对象,这样我就可以给它方法,但我看不到如何做到这一点,因为 create 方法返回的是单个电子邮件,而不是整个电子邮件属性。
【问题讨论】:
标签: ajax json knockout.js knockout-mapping-plugin