Я строю большую страницу с 10 различными формами на IT- каждой формы будет ее собственная модель, с помощью мастер-модели, потянув их вKnockout.js - Настройка привязок после загрузки модели с помощью Ajax
Во-первых. :
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" >
Страница больше не видит эту модель, как раньше, и, следовательно, вся секция скрыта.
Я также пытался ссылаться на него через $ корень, но по-прежнему не везло.
<div data-bind="with: $root.selectedCoverage" >
Как я могу убедиться, что applyBindings знает, где находятся модели, приобретенные ajax?
Спасибо.
Update Я попытался сделать эти начальные значения наблюдаемых, но никакой радости:
// *** section-specific models
self.selectedCoverage = ko.observable();
$.getJSON("./load.php",{},function(data){
self.selectedCoverage = new SelectedCoverage(data);
});
Хм .. это все еще не делал этого. Обновлен мой пример выше .... – Scott
это не self.selectedCoverage = новый SelectedCoverage (данные), но self.selectedCoverage (новый SelectedCoverage (данные)); – Jalayn
Doh! Прости, я пропустил это. Спасибо, он отлично работает. – Scott