1

一連の CSS バインディングをカプセル化するカスタム バインディングを作成しようとしています。具体的には、次の代わりに:

data-bind="css: { success: PickInventoryViewModel.ajaxSuccess, fail: PickInventoryViewModel.ajaxFailure, working: PickInventoryViewModel.ajaxWorking }"

これ欲しい:

data-bind="ajaxStatus: PickInventoryViewModel"

バインディングは、このajaxStatus実装の詳細をアプリ全体に散りばめるのではなく、適切な css バインディングを開始するカスタム バインディングになります。ただし、cssbindingHandler には init 関数がないため、これを機能させる方法が完全にはわかりません。

各オブザーバブルをサブスクライブしてko.bindingHandlers['css'].update、観測値が のときに呼び出すことができると思いますtrue。私が検討した別の可能なオプションは、css バインディングを html 要素に挿入し、ノードを再バインドすることです (これが、この fiddle でapplyBindingsToNode例示されている本質だと思います。

誰かがより良いアイデアを持っていますか?

ありがとう、ヴィニー

4

1 に答える 1

7

カスタムバインディングのinit関数から

ko.applyBindingsToNode(element, { css: { /* stuff */ } });
于 2013-09-19T17:43:11.457 に答える