Knockout.js 剔除映射:将两个对象合并为一个对象
我有来自服务器的json。它包含类似于数组的内容(Knockout.js 剔除映射:将两个对象合并为一个对象,knockout.js,Knockout.js,我有来自服务器的json。它包含类似于数组的内容(Schedule),但每个Schedule元素都由两个其他对象组成 每个计划元素如下所示: {"Schedule":[ {"InputItem": {"Id" : "1231", "Name": "TempName"}, "OutputItem": {"CalcId" : "a1231", "CalcName": "CakcTempName"} }, ... ]}; 因此,在knockout中,我有一个接受j
Schedule
),但每个Schedule
元素都由两个其他对象组成
每个计划
元素如下所示:
{"Schedule":[
{"InputItem": {"Id" : "1231", "Name": "TempName"},
"OutputItem": {"CalcId" : "a1231", "CalcName": "CakcTempName"}
},
...
]};
因此,在knockout中,我有一个接受jsonData的视图模型(如上所述):
因此,我得到了self.Schedule数组,该数组包含InputItem
和calculateItem
。
但是,我需要创建这样一个自定义映射,将InputItem
和calculateItem
组合成一个对象,例如,ScheduleItem
,这样在映射之后,我就不会有InputItem
和calculateItem
,而只有一个ScheduleItem
可能吗
另外,我之所以需要它,是因为在网格中显示日程表数组要容易得多。网格的一半是输入项,但一半是计算项。在UI上,我不需要将这些项目分开。
我也可以通过更改服务器端型号来解决这个问题,但这里我要问的是KO部件。请查看。“使用“创建”自定义对象构造”一节解释了如何定义自己的逻辑来控制映射数据的创建。这将允许您使用一个简单的jQuery映射来执行到所需对象结构的投影
var viewModel = function(jsonData) {
var self = this;
var customMapping = {
//'Schedule': {
//
// }
};
ko.mapping.fromJS(jsonData, customMapping, self);
};