2

複数のビュー モデルで構成される SPA にノックアウトを使用しています。どのビューを表示するかを処理するために、「サブ」ビュー モデルを bindings でバインドする div をラップしました。

私たちが目にしている問題は、ビューの可視性が切り替えられると、その中のカスタム バインディングが毎回実行され、初期化と更新の両方が行われることです。

これは、このjqdialog バインディングに基づくバインディングがあり、init ごとに新しいダイアログが作成されて DOM に追加されるときに問題を引き起こしますが、それをいつ削除する必要があるかを知る簡単な方法はありません。

多かれ少なかれ、アーキテクチャのこの部分を再配置する必要があるかどうか、またはバインディングに何かが欠けているかどうかが問題です。

単純なビュー:

<div id="view">
  <button data-bind="click: on">On</button>
  <button data-bind="click: off">Off</button>

  <div data-bind="with: visible">
    <span data-bind="foo: ''">foo</span>
    visible
  </div>

</div>​​​​​​​​​​

J:

ko.bindingHandlers.foo= {
  init: function() {
    alert("init");
  },
  update: function() {
    alert("update");
  }
}


var vm =(function() {
  var self = this;
  self.visible = ko.observable(false);

  self.on = function() { self.visible(true); };
  self.off= function() {self.visible(false); };

})();

ko.applyBindings(vm, document.getElementById("view"));

</p>

エラーを大まかに示す小さなフィドル。

4

1 に答える 1