【问题标题】:knockout mapping - multiple data sources into one view model淘汰映射 - 多个数据源到一个视图模型
【发布时间】:2013-03-31 18:55:06
【问题描述】:

我目前正在尝试分解大部分数据,这些数据由对 .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'中设置一个键,但这没有帮助。任何人都可以看到我做错了什么明显的事情吗?任何帮助将不胜感激。

【问题讨论】:

  • 您能否发布一个更完整的视图模型的 jsfiddle,并可能包含您的 Web 服务返回的 JSON 数据示例?通常,每组数据将由 observableArray 或完全独立的视图模型表示,具体取决于您希望如何使用数据。

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


【解决方案1】:

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

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]);
     }
}

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 1970-01-01
    • 2012-12-18
    • 2012-11-30
    • 2014-07-20
    • 2012-11-12
    • 2016-01-27
    • 2012-01-18
    • 2017-06-10
    相关资源
    最近更新 更多