【发布时间】:2013-07-09 11:45:55
【问题描述】:
在页面加载时,我将 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/ 自动映射对象。
任何指针都会有所帮助
【问题讨论】:
标签: knockout.js knockout-2.0 knockout-viewmodel-plugin