我有json来自服务器。它包含类似数组(Schedule
)的内容,但每个Schedule
元素由另外两个对象组成。
每个Schedule
元素都是这样的:
{"Schedule":[
{"InputItem": {"Id" : "1231", "Name": "TempName"},
"OutputItem": {"CalcId" : "a1231", "CalcName": "CakcTempName"}
},
...
]};
所以,在淘汰赛中,我有一个接受jsonData的视图模型(如上所述):
var viewModel = function(jsonData) {
var self = this;
var customMapping = {
//'Schedule': {
//
// }
};
ko.mapping.fromJS(jsonData, customMapping, self);
};
结果我得到包含InputItem
和CalculatedItem
的self.Schedule数组。
但是,我需要创建一个将InputItem
和CalculatedItem
合并到一个对象中的自定义映射,例如ScheduleItem
,这样在映射后我就不会InputItem
和CalculatedItem
,但只有一个ScheduleItem
。
有可能吗?
P.S。我需要这个的原因是因为在网格中显示Schedule数组要容易得多。网格的一半是InputItems,但网格的一半是CalculatedItems。在UI上我不需要分离这些项目。 我可以解决这个问题也改变了我的服务器端模型,但在这里我要问的是KO部分。
答案 0 :(得分:0)
查看documentation on the mapping plugin。 “使用'create'自定义对象构造”一节说明了如何定义自己的逻辑来控制映射数据的创建。这将允许您使用简单的jQuery映射来执行对所需对象结构的投影。