1

同じ DOM 要素で applyBindings を複数回呼び出すのを避けるために、さまざまなビューモデルをオブザーバブルでラップします。次に、そのオブザーバブルを私が見たいビューモデルとBAMに変更するだけです...それは機能します。

私がこのようなことをするまで:

<div data-bind="if:$data">
...some bindings in here
</div>

ビュー モデルを変更すると、「if:$data」ブロック内のバインディングが更新されません。

これを実際に示すフィドルは次のとおりです。http://jsfiddle.net/btrauma8/2TxME/

4

1 に答える 1

2

これは、KO 2.2 より前では適切に機能していました。2.2 では、値が true/falsy の間で実際に変化した場合にのみセクションを再レンダリングすることでif、より効率的になりました。ifnot

if: items().lengthアイテムが追加されるたびにセクション全体が再レンダリングされるようなものに対して人々がバインドするケースが多くありました。

あなたの場合、のwith代わりにバインディングを使用するだけで、これを非常に簡単に克服できますif。に対してバインドしているため、$data実際にはコンテキストが変更されず、目的の結果が得られます。

于 2013-02-14T18:24:28.403 に答える