1

これはしばらくの間私を悲しませてきました。

Knockout、Knockout Mapping、および Knockout Validation を使用する Web アプリがあります。この問題を除いて、すべてがうまくいっています。この問題は、このFiddleによって示されています。

問題を実証するには、フィドルを実行し、リストから何かを選択します。表示されたら、[名前] フィールドをクリアします。検証メッセージが表示される場合と表示されない場合があります (ランダムです。フィドルでは、最初の実行時に表示されないように見えますが、実際のコードでは、ページを更新するときに表示される場合と表示されない場合があります)。

リロードボタンをクリックして、同じことをもう一度行います。今回は、検証エラーが表示されるはずです。

今、本当に楽しい部分です。JavaScript の一番下にある次の行をコメントアウトします。

self.loadSupportData();

これは、2 番目のマッピングが実行されないようにするためです。実験をやり直してください。今回は、検証は最初の実行で機能します。

これは何が原因ですか?

4

1 に答える 1

-1

バインディングを適用する前にデータをロードするため、問題が発生すると思います。

コメント行 :

self.loadData();

最後の行を変更します:

var viewModel = new PersonAttributeListViewModel();
ko.applyBindings(viewModel);
viewModel.loadData();

それは正常に動作します。

于 2012-10-05T09:55:07.780 に答える