Knockout.js 剔除映射:将两个对象合并为一个对象

Knockout.js 剔除映射:将两个对象合并为一个对象,knockout.js,Knockout.js,我有来自服务器的json。它包含类似于数组的内容(Schedule),但每个Schedule元素都由两个其他对象组成 每个计划元素如下所示: {"Schedule":[ {"InputItem": {"Id" : "1231", "Name": "TempName"}, "OutputItem": {"CalcId" : "a1231", "CalcName": "CakcTempName"} }, ... ]}; 因此,在knockout中,我有一个接受j

我有来自服务器的json。它包含类似于数组的内容(
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);
};