我正在开发一个在线表单系统,其中的表单需要随着时间的推移而更新。我将 Knockout.js 与 Mapping 插件结合使用来完成此任务,并且运行良好。
但是,我遇到的一个问题是,它似乎拒绝在 ViewModel 上保存不在从数据库加载的 JSON 对象中的任何属性。例如,如果保存到数据库的 ViewModel 如下所示:
var viewModel = {
prop1: ko.observable(""),
prop2: ko.observable(""),
prop3: ko.observableArray()
};
我将“viewModel”变量初始化为此原型,然后从服务器加载我的 JSON 数据,ko.mapping.fromJSON(data, {}, viewModel);
这按预期工作。这是我的问题所在;如果我的 viewModel 现在有一个额外的属性,像这样:
var viewModel = {
prop1: ko.observable(""),
prop2: ko.observable(""),
prop3: ko.observableArray(),
prop4: ko.observableArray()
};
如果我加载基于第一个原型创建的 JSON 数据,我可以访问 viewModel 中的第四个属性,从数组中添加和删除并在屏幕上看到它更新,但它不会使用ko.mapping.toJSON(viewModel)
. 我正在收集这与“ ko_mapping_ ”属性有关,这些属性被分配给使用映射插件映射的viewModel部分。如果以前已经解决过这种情况,我深表歉意,但我找不到答案。
我需要能够更新 viewModel 的原型,因为它的特定要求可能会随着时间的推移而略有不同。这可能发生在我的任何表单上,所以一个通用的解决方案会很棒!
谢谢你。