5

ネストされたdivがVMにバインドされないことを経験しています。何かアイデアはありますか?私は次のことを試していますが、アイデアが壊れますか?

<div id="div1">
   <div id="div2">

   </div>
</div>

私が試してみると、これはうまくいきます:

<div id="div1">
</div>

<div id="div2">
</div>

Javascript:

ko.applyBindings(vm1, document.getElementById('div1'));
ko.applyBindings(vm2, document.getElementById('div2'));

何か案は?

4

1 に答える 1

5

バインドdiv1すると、にあるものを含むすべてがバインドされdiv2ます。バインドdiv2すると、要素が再度バインドされます。要素には複数のイベントハンドラーがアタッチされるため、これは適切な状況ではありません。そうしないと、要素が別のビューモデルに対してバインドすることを期待していないため、applyBindingsの1つがエラーになる可能性があります。

ここの記事は、内側の要素が外側の呼び出しに拘束されないように保護する方法を示しています:http ://www.knockmeout.net/2012/05/quick-tip-skip-binding.html

もう1つのオプションは、次のような単一のビューモデルを使用することです。

var viewModel = {
  vm1: vm1,
  vm2: vm2
};

ko.applyBindings(viewModel);

次に、次のようにバインドします。

<div id="div1" data-bind="with: vm1">
   <div id="div2" data-bind="with: $root.vm2">

   </div>
</div>
于 2013-01-11T04:03:53.080 に答える