複数のビジネス オブジェクトを含むグリッドがあります。それらを製品と呼びましょう。項目をクリックすると、AJAX 呼び出しを実行してデータを取得し、モーダル「ウィンドウ」にバインドされた Knockout viewModel を作成します (ブートストラップを使用)。ユーザーは製品を変更できます。たとえば、名前を別の名前に変更したり、キャンセルまたは保存を押したりできます。ユーザーが保存/キャンセルを押すと、グリッドに戻り、別の製品をクリックして、新しい製品でモーダルをポップアップできます (データを取得するための別の AJAX 呼び出しなど)。
さて、私は再び KO.applyBindings(viewModel) を呼び出していました。それは悪い考えかもしれないと思います。私が気付いているのは、ユーザーが名前を入力しない場合 (必須)、「名前が必要です」という 2 つの検証メッセージが表示されることです。したがって、これは、2 つのイベントをバインドする必要があることを示しています (または何か)。そのため、いくつかの Google 検索を行ったところ、applyBindings を 2 回呼び出す場合に ko.cleanNode(node) を使用している記事がいくつか見つかりました。それは私の問題を解決しませんでした。私は knockout.validation.js を使用しており、 name プロパティを次のように拡張しています。
vm.Name.extend({
required: { message: 'Name is required.' },
minLength: 1
});
拡張または unApplyBindings をクリアする方法はありますか? それとも、KO を間違って使用しているだけですか? 私はそれが本当に好きですが、あなたがやりたいことをするのに時間がかかります(それが彼らが私にお金を払う理由です). 必要に応じて、これを実証するために Fiddle を作成することができます..