我试图将JSON数据映射到子对象,我可以使用根对象使其工作:
var data = {transfer: {"VisitTransferId":"a46bb9ce-9feb-410b-b643-d917560bb6e5","FromVisit":"16*15997*2*2","ToVisit":"10*1*9*9*9"}};
ko.mapping.fromJS(data, {}, visitDetailsVm);
就像在这个JSFiddle here中一样,但是我想知道为什么在进行映射时指定子对象时它不起作用(这两者之间的数据不一样) :
var data = {"VisitTransferId":"a46bb9ce-9feb-410b-b643-d917560bb6e5","FromVisit":"16*15997*2*2","ToVisit":"10*1*9*9*9"};
ko.mapping.fromJS(data, {}, visitDetailsVm.transfer);
喜欢here
答案 0 :(得分:1)
当您运行映射并提供变量来接收数据时,您实际上正在设置变量的值...不填充observable。因此,您完全覆盖了观察者。
查看http://jsfiddle.net/BWgwt/3/
var visitDetailsVm = new VisitDetails();
visitDetailsVm.transfer(ko.mapping.fromJS(data));
var mappedAmas = ko.utils.arrayMap(amadata, function(ama) {
return ko.mapping.fromJS(ama);
});
visitDetailsVm.amas(mappedAmas);
使用可观察数组,您实际上想要映射数据数组中的每个实例,然后使用映射结果填充可观察数组。