1

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" >

appliedBindings が ajax 取得モデルの場所を認識していることを確認するにはどうすればよいですか?

ありがとう。


更新 私はこれらの初期値を観察可能にしようとしましたが、喜びはありません:

// *** section-specific models
self.selectedCoverage = ko.observable();
$.getJSON("./load.php",{},function(data){
    self.selectedCoverage = new SelectedCoverage(data);
});
4

1 に答える 1

1

selectedCoverage主にビューモデルをDOMにバインドする方法とタイミングなど、残りのコードは提供しませんでしたが、 (contactInformationちなみに)監視可能なオブジェクトではないためだと思います。あなたがすべきことはおそらくこれです:

self.selectedCoverage = ko.observable();
self.contactInformation = ko.observable();

$.getJSON("./load.php",{},function(data){
    self.selectedCoverage(new SelectedCoverage(data));
    self.contactInformation(new ContactInformation(data));
});
于 2013-05-15T17:16:22.973 に答える