gpt4 book ai didi

knockout.js - 子对象的 KO 映射问题

转载 作者:行者123 更新时间:2023-12-04 08:35:37 25 4
gpt4 key购买 nike

我从服务器获取以下数据:

var data =   [{ id: 0, child: { prop1 : 'a', prop2 : 'b' } }   //Child object has data
,{ id: 0, child: null } ]; // Child object is null

我在使用 knockout 映射插件映射数据后遇到了一些问题。问题是内部 child对象不是同一类型。

执行此操作后:
ko.mapping.fromJS(data, viewModel.data);   

我知道第一个对象有 child类型的属性 Object与数据。然而,第二个对象有一个属性 child类型 Observable当它被解包时返回null。

我怎样才能在这两种情况下使对象具有相同的类型,即使一个具有值而另一个为空。改变服务器的行为方式不是一种选择。我希望有 Objectnull或两者兼而有之 Observables .

JsFiddle here .

最佳答案

您需要使用 create option告诉映射插件它应该如何映射您的 child属性(property)。

所以如果你想拥有 Objectnull您需要返回 null当您的 child 属性(property)是 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);

演示 JSFiddle .

或者,如果您同时想要它们 Observables :
var mappingOptions = {
child: {
create: function(options) {
return ko.observable(ko.mapping.fromJS(options.data));
}
}
}

ko.mapping.fromJS(data, mappingOptions, viewModel.data);

关于knockout.js - 子对象的 KO 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18654663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com