現在、Knockout でカスタム バインディングを作成するためのドキュメントを調べていて、概念は理解できますが、実際に適用するのに苦労しています。
具体的には、slideUp/slideDown jQuery アニメーションを if バインディングに提供したいと考えています。ただし、KO にカスタム バインドを「表示」させるだけで問題が発生しています。バインディングの拡張に関する正しい方向へのポイントは、非常に高く評価されます。
その他の注意事項:
hereの KO 外部テンプレート エンジンを次のように使用しています。
<!-- ko template: { name: 'SummaryBox', if: expanded } --><!-- /ko -->
そして、デフォルトの「if」をラップする非常に基本的なカスタム バインディングを作成しました。
ko.bindingHandlers['slidingIf'] = {
init: function(element, valueAccessor, allBindingsAccessor, context) {
return ko.bindingHandlers['if']['init'](element, valueAccessor, allBindingsAccessor, context);
},
update: function(element, valueAccessor, allBindingsAccessor, context) {
return ko.bindingHandlers['if']['update'](element, valueAccessor, allBindingsAccessor, context);
}
};
ko.virtualElements.allowedBindings['slidingIf'] = true;
しかし、以前のバインディングをこれに置き換えると、
<!-- ko template: { name: 'SummaryBox', slidingIf: expanded } --><!-- /ko -->
テンプレートは基本的に「slidingIf」バインディングを無視し、テンプレートをそのまま表示します。