我目前正在尝试分解一大段数据,这些数据是由对 .NET 网络服务的 $ajax 调用提供的,当数据映射到 Knockout View 时,这会导致页面上的脚本超时模型。我在文档中注意到您应该能够将多个数据源绑定(bind)到一个 View 模型,如下所示:
var viewModel = ko.mapping.fromJS(alice, aliceMappingOptions);
ko.mapping.fromJS(bob, bobMappingOptions, viewModel);
我已经在我自己的代码中尝试过这个,如下所示,在第一次传递时我绑定(bind)到一个新的 View 模型,然后在后续传递中我尝试重新绑定(bind)到相同的 View 模型:
if(currLoadIndex == 0)
{
currViewModel = ko.mapping.fromJS(data, mappingOptions);
}
else{
ko.mapping.fromJS(data, mappingOptions, currViewModel);
}
但是,当我将它绑定(bind)到我的模板时,这只给我留下了我加载的最后一部分数据。我试过在我的“mappingOptions”中设置一个键,但这没有帮助。有人能看出我做错了什么吗?任何帮助将不胜感激。
最佳答案
可能不是最好的解决方案,但这解决了我的问题:
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]);
}
}
关于javascript - knockout 映射——将多个数据源整合到一个 View 模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900333/