2013-04-09 3 views
3

В настоящее время я пытаюсь разбить большой раздел данных, который предоставляется вызовом $ ajax веб-сервису .NET, что вызывает тайм-аут сценария на странице когда данные сопоставляются с моделью представления нокаута. Я заметил в документации, которую вы должны иметь возможность привязки нескольких источников данных в один ViewModel, например, так:сопоставление нокаутов - несколько источников данных в одной модели представления

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', но это не помогло. Может ли кто-нибудь увидеть что-нибудь очевидное, что я делаю неправильно? Любая помощь приветствуется.

+0

Вы можете подать jsfiddle более полного представления модели и, возможно, включать в выборку данных JSON, возвращаемых вашей веб-сервиса? Обычно каждый набор данных будет представлен либо наблюдаемым массивом, либо полностью отдельной моделью просмотра в зависимости от того, как вы хотите использовать данные. – 79IT

ответ

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