我使用的是淘汰赛3.3.0。假设我有一个模型如下:
如您所见,有两个嵌套对象DeviceStatistics
和Product
起初它们没问题,工作正常并更新HTML
我将新值分配给这些对象,如下所示:
window.KoEntityModel.EntityModel.DeviceStatistics = ko.mapping.fromJS(newJsonModel);
没有任何问题可以,但是淘汰不会更新(更改)HTML
然而,Chrome控制台显示window.KoEntityModel.EntityModel.DeviceStatistics
是可观察的:
我该如何解决?
答案 0 :(得分:1)
将object
转换为function
,您需要执行以下操作
<强>视图模型:强>
var fromserver = {
'device': {
'one': 'onevalue'
},
'product': {
'prod': 'prodone'
},
'name': 'supercool'
};
var ViewModel = function() {
var self = this;
self.device = ko.observable();
self.prod = ko.observable();
ko.mapping.fromJS(fromserver, {}, self); //this converts object into function & keeps the other prop's coming from server intact .
};
var vm = new ViewModel();
ko.applyBindings(vm);
工作样本小提琴 here 显示已修改的数据。
答案 1 :(得分:0)
我找到了解决方案,
我们必须使用以下代码更新knockoutJs视图模型:
ko.mapping.fromJS(newDataInJson, {}, knocoutJsViewModel);