我正在构建一个大页面,上面有 10 个不同的表单——每个表单都是它自己的模型,一个主模型将它们全部拉入。
第一的:
var masterPageModel = new PageViewModel();
ko.applyBindings(masterPageModel);
其中引用 pageViewModel.js::
// section-specific models
this.selectedCoverage = new SelectedCoverage();
// continue with other sub-models...
哪些引用 selectedCoverage.js (和其他)像这样:
this.tier_chosen = ko.observable("Individual + Family");
this.subscriber_dob = ko.observable('January 15, 1970');
this.subscriber_age = ko.observable(43);
我现在意识到我需要在这些模型中预先填充数据。所以,我开始走这条路:
var self = this;
$.getJSON("./load.php",{},function(data){
self.selectedCoverage = new SelectedCoverage(data);
});
现在, selectedCoverage.js 看起来像:
ko.mapping.fromJS(data, {}, this);
但是,我的表单不再按预期工作。具体来说,“with: [model]”不再看到相关的模型。
<div data-bind="with: selectedCoverage" >
该页面不再像以前那样看到此模型,因此,整个部分都被隐藏了。
我也尝试通过 $root 引用它,但仍然没有运气。
<div data-bind="with: $root.selectedCoverage" >
如何确保应用绑定知道 ajax 获取的模型在哪里?
谢谢。
更新 我确实尝试使这些初始值可观察,但没有喜悦:
// *** section-specific models
self.selectedCoverage = ko.observable();
$.getJSON("./load.php",{},function(data){
self.selectedCoverage = new SelectedCoverage(data);
});