mar*_*bit 8 knockout-mapping-plugin knockout.js
我从服务器获取以下数据:
var data = [{ id: 0, child: { prop1 : 'a', prop2 : 'b' } } //Child object has data
,{ id: 0, child: null } ]; // Child object is null
Run Code Online (Sandbox Code Playgroud)
在使用knockout mapping插件映射数据后,我遇到了一些问题.问题是内部child对象的类型不同.
执行后:
ko.mapping.fromJS(data, viewModel.data);
Run Code Online (Sandbox Code Playgroud)
我得到第一个对象具有带数据child的类型属性Object.但是,第二个对象具有child类型的属性Observable,当它被解包时返回null.
如何在两种情况下都使对象具有相同的类型,即使一个具有值,另一个为null.无法更改服务器的行为方式.我希望有Object和null或两者Observables.
JsFiddle 在这里.
您需要使用该create选项来告诉映射插件它应该如何映射您的child属性。
因此,如果您想要拥有Object并且null需要null在您的子财产为以下情况时返回null:
var mappingOptions = {
child: {
create: function(options) {
if (!options.data)
return null;
return ko.mapping.fromJS(options.data);
}
}
}
ko.mapping.fromJS(data, mappingOptions, viewModel.data);
Run Code Online (Sandbox Code Playgroud)
演示JSFiddle。
或者如果你两者都想要Observables:
var mappingOptions = {
child: {
create: function(options) {
return ko.observable(ko.mapping.fromJS(options.data));
}
}
}
ko.mapping.fromJS(data, mappingOptions, viewModel.data);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4653 次 |
| 最近记录: |