在页面加载时,我正在将 JSON 数据转换为这样的视图模型
var jsonField = '#' + '<% = hdnField.ClientID %>';
jsonModel= {
availables: ko.observableArray([])
};
var valueField = $(jsonField)[0].value;
var arrayGroup = $.parseJSON(valueField);
jsonModel.availables = ko.viewmodel.fromModel(arrayGroup);
var block=$('#availabilitiesBlock')[0];
ko.applyBindings(jsonModel,block);
页面加载后,我正在调用 ajax 服务器函数来更新此视图模型。
在 tha ajax 成功回调中,我写过
var updatedModel = {
availables: ko.observableArray([])
};
updatedModel.availables = ko.viewmodel.fromModel(data.d);
当我尝试使用此更新模型更新视图模型时,我的整个模型变为空白
我尝试了以下方法
将 data.d 推送到 oldModel.availables 可观察对象中。当我推送数据时,数组对象不会被转换为可观察对象,而是将项目添加到可用数组中。而在最初(页面加载时),对象被转换没有问题。
尝试直接更新视图模型,在这种情况下整个模型变为空白
ko.viewmodel.updateFromModel(oldModel, updatedModel);
旧模型截图
更新模型的片段
正如我所说,当我直接推送数组对象(data.d)时,不会像 ajax 之前的第一种情况那样自动创建可观察对象。
为什么在逻辑相同的情况下会发生这种情况?我正在使用http://coderenaissance.github.io/knockout.viewmodel/自动映射对象。
任何指示都会有所帮助