У меня есть 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, и я получаю тот же результат.
Любые идеи? спросите, поможет ли больше кода. Я не хотел слишком сильно перегружать вопрос, если это не было необходимо. Спасибо!