1

こんにちは私は変数によって保持されているノックアウトのモデルを持っています:

var knockoutObject = knockoutObservable;

私がこれを行う場合:

knockoutObject(newValue);

ノックアウト(?)のバインディングイベントをトリガーし、UIが更新されます。画面全体に影響を与えることなく、ノックアウトオブザーバブルの値を更新するにはどうすればよいですか?つまり、モデルの値を更新しますが、UIは更新しません

それはMVVMとの取引なので、私はその種類の奇妙なことを知っていますが、特定のシナリオでそれが必要です...

編集:私がやろうとしていること:画面にいくつかのjsTreeがあります。それらはモデルにバインドされています。モデル内の特定のオブザーバブルを更新すると、すべてのツリーが再レンダリングされ、デフォルトの状態に閉じられます。それは私に悪いユーザーエクスペリエンスを与える
ので、ツリーの値を変更するとUIがすでに正しい値で更新されているので(これが私がそれを構築した方法です)、ツリーを再レンダリングするためにノックアウトする必要はありません。モデルの値だけです。

ツリー用のカスタムバインディングハンドラーがあります。

ko.bindingHandlers.Tree

ありがとう

4

1 に答える 1

2

スロットルを使用して実行を遅らせることができますが、問題全体に別の方法でアプローチしたい場合があります。あなたが解決しようとしていることについてもう少し洞察があれば、おそらくより良い代替案を提案することができます。

更新(コメントから):

バインディングは、理想的にはjsTreeプラグインを再作成するのではなく、単に内部を変更する必要があります。これはそれを行うための好ましい方法です。

それができない場合は、バインディングに状態をキャッシュして、以前の状態でjsTreeを再作成できるかどうかを確認してください

于 2012-06-27T15:02:32.133 に答える