我希望使用 Knockout 映射来生成 ViewModel。
var viewModel = ko.mapping.fromJS(data);
创建 ViewModel 后,我想添加计算文本元素。
for (var i = 0; i < viewModel.Packages().length; i++) {
var pack = viewModel.Packages()[i];
pack.packageClass = ko.computed(function() {
return this.Height() * this.Depth() * this.Width()
}, pack);
}
绑定页面。
ko.applyBindings(viewModel);
页面在这种状态下工作正常......
但现在用户想“保存”和“重新加载”页面。这将使用映射功能来完成,该功能使用新数据更新 ViewModel。
data = ko.mapping.toJSON(viewModel);
但是在重新绑定页面之前不可能再次添加那些计算字段。而且我会得到错误,即找不到计算元素(不再)。
ko.mapping.fromJS(data, viewModel);
我做错了什么吗?
没有计算字段或没有重新加载 ViewModel 一切正常...
更新:小提琴更新为像在解决方案中一样工作。