2013-09-17 3 views
0

У меня есть ViewModel, что имеет knockoutObservableArray типа BatchHistoryViewModelKNOCKOUT При обновлении Databinding С Mapping

Он успешно создан в constuctor, используя следующие опции

var mappingOptions = { 
      'batchHistories': { 
       create: function (options) { 
        return new BatchHistoryViewModel(options.data, dataContext); 
       }, 
       key: function (batchHistory) { 
        return ko.utils.unwrapObservable(batchHistory.Id); 
       } 
      } 

отображения, который работает просто отлично и наблюдаемый массив отображается правильно в таблице на DOM

Теперь, когда я пытаюсь запустить функцию обновления для получения одних и тех же данных из того же источника, он не обновляет DOM I можно наблюдать наблюдаемый в консоли и посмотреть, что он обновляется с правильными данными, но он не обновляется на странице

вот моя функция обновления

refresh() { 
     var self = this; 

     $.when(self.dataContext.getBatchHistories(0, "Any")) 
      .done(function (refreshedData) { 
       var mappingOptions = { 
        'batchHistories': { 
         create: function (options) { 
          return new BatchHistoryViewModel(options.data, null); 
         }, 
         key: function (batchHistory) { 
          return ko.utils.unwrapObservable(batchHistory.Id); 
         } 
        } 
       }; 

       self = ko.mapping.fromJS(refreshedData, mappingOptions); 

и вот что. чистый MVC контроллер возвращается

 var batchHistories = 
      new 
      { 
       batchHistories = 
        this.consoleRepository.GetBatchHistories(fromDate, status).ToList() 
         .Select(batchHistory => new 
               { 
                Id = batchHistory.Id, 
                      DataMartName = batchHistory.DataMartName, 
                      Name = batchHistory.Name, 
                      LoadType = batchHistory.LoadType, 
                      BatchDefinitionId = batchHistory.BatchDefinitionId, 
                      SsisExecutionId = batchHistory.SsisExecutionId, 
                      StatusId = batchHistory.StatusId, 
                      Status = batchHistory.Status.Status, 
                      StartDateTime = batchHistory.StartDateTime.SafeToString(), 
                      EndDateTime = batchHistory.EndDateTime.SafeToString(), 
               }) 
         .ToList() 
      }; 


     return this.Json(batchHistories, JsonRequestBehavior.AllowGet); 

Я пробовал с или без mapppingOptions на fromJS, и я получаю тот же результат.

Любые идеи? спросите, поможет ли больше кода. Я не хотел слишком сильно перегружать вопрос, если это не было необходимо. Спасибо!

ответ

0

я делал это неправильно это правильный способ применения отображения

ko.mapping.fromJS(refreshedData, self); 
Смежные вопросы