我有一个具有 BatchHistoryViewModel 类型的 knockoutObservableArray 的视图模型
它正在使用以下映射选项在构造函数中成功创建
var mappingOptions = {
'batchHistories': {
create: function (options) {
return new BatchHistoryViewModel(options.data, dataContext);
},
key: function (batchHistory) {
return ko.utils.unwrapObservable(batchHistory.Id);
}
}
效果很好,并且可观察数组在 DOM 上的表中正确显示
现在,当我尝试运行更新函数以从同一源获取相同的数据时,它不会更新 DOM 我可以在控制台中观察 observable 并看到它正在使用正确的数据进行更新,但它没有页面更新
这是我的刷新功能
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);
这是 .net 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);
我已经尝试过使用或不使用 fromJS 上的映射选项,我得到了相同的结果。
有任何想法吗?请询问更多代码是否有帮助。除非需要,否则我不想让问题过多。谢谢!