淘汰映射 - 将多个数据源整合到一个视图模型中

时间:2013-04-09 11:12:46

标签: javascript .net json knockout.js knockout-mapping-plugin

我正在尝试分解大部分数据,这是由对.NET Web服务的$ ajax调用提供的,当数据被映射到Knockout视图时导致页面上的脚本超时模型。我在文档中注意到你应该能够将多个数据源绑定到一个视图模型,如下所示:

var viewModel = ko.mapping.fromJS(alice, aliceMappingOptions);
ko.mapping.fromJS(bob, bobMappingOptions, viewModel);

我已经在我自己的代码中尝试了这个,如下所示,并且在第一次传递时我绑定到一个新的视图模型,然后在后续传递中我尝试重新绑定到相同的视图模型:

if(currLoadIndex == 0)
{
    currViewModel = ko.mapping.fromJS(data, mappingOptions);
}
else{
    ko.mapping.fromJS(data, mappingOptions, currViewModel);
}

然而,当我将它绑定到我的模板时,这只留给我加载的最后一部分数据。我已经尝试在我的'mappingOptions'中设置一个键,但这没有帮助。任何人都可以看到任何明显的错误吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

可能不是那里最好的解决方案,但这解决了我的问题:

if(currLoadIndex == 0)
{
     currViewModel = ko.mapping.fromJS(data, mappingOptions);
}
else{
     var tmpModel = ko.mapping.fromJS(data, mappingOptions);
     for(i = 0; i < tmpModel.GetProductListResult().length; i++)
     {
         currViewModel.GetProductListResult().push(tmpModel.GetProductListResult()[i]);
     }
}