回答:
viewModel全体で何かを呼び出すことはできませんが、個々のオブザーバブルで呼び出してmyObservable.valueHasMutated()
、サブスクライバーに再評価する必要があることを通知できます。ご指摘のとおり、これは通常KOでは必要ありません。
myViewModel.valueHasMutated()
てビュー全体を更新できます。
状況によっては、バインディングを単純に削除してから再適用すると便利な場合があります。
ko.cleanNode(document.getElementById(element_id))
ko.applyBindings(viewModel, document.getElementById(element_id))
bindHTMLノックアウトバインディングハンドラーでJSFiddleを作成しました:https ://jsfiddle.net/glaivier/9859uq8t/
まず、バインディングハンドラーを独自の(または共通の)ファイルに保存し、Knockoutの後に含めます。
これを使用する場合、バインディングをこれに切り替えます。
<div data-bind="bindHTML: htmlValue"></div>
OR
<!-- ko bindHTML: htmlValue --><!-- /ko -->
valueHasMutated
、タイプのプロパティを持つ要素を検索し、それぞれのプロパティfunction
に対して呼び出すこともできます。これですべてのオブザーバブルを取得できるはずですが、これは悪い習慣であり、予想よりもはるかに多くの更新を起動します(計算された依存関係チェーンを考えてみてください)。