Bubble
ハンドラーは実際のバインディングハンドラーではなく、バインディングのオプションとして使用されます(event
バインディングclick
はバインディングを呼び出しますevent
)。したがって、それらは単独で実行されません。
したがって、「偽の」no-opハンドラーを追加して使用するclickBubble
ことも、カスタムバインディングを作成してこれを行うこともできます。
多分次のようなものです:
ko.bindingHandlers.preventBubble = {
init: function(element, valueAccessor) {
var eventName = ko.utils.unwrapObservable(valueAccessor());
ko.utils.registerEventHandler(element, eventName, function(event) {
event.cancelBubble = true;
if (event.stopPropagation) {
event.stopPropagation();
}
});
}
};
そして、ちょうど置く:
<input data-bind="preventBubble: 'click'" />
必要に応じて、一連のイベントを受け入れるようにさらに拡張することもできます。
サンプル: http: //jsfiddle.net/rniemeyer/WcXwZ/