現在のプロジェクトでは、knockout.jsとhammer.jsの両方を使用しています。Hammer.jsで「tap」イベントのカスタムバインディングハンドラーを作成しました(これは、holdやswipeなどの他のイベントでも機能するはずです)。私の問題は、このバインディングハンドラーで、HTMLのdata-bind属性で提供するメソッドを呼び出したいということです。ノックアウトのドキュメントによると、valueAccessor()を呼び出す必要があることがわかりましたが、残念ながら、これでは何も実行されません。私はこのフィドルを作成しました。これは私の問題の明確な例を与えるはずです。助けてくれてありがとう。
HTML:
<button data-bind="tap: myFunction">Click Me</button>
JS:
ko.bindingHandlers.tap = {
'init': function(element, valueAccessor) {
var tap = new Hammer(element);
tap.ontap = function(ev){
//call the method provided in HTML, in this case doSomething();
// I've tried calling valueAccessor(); but this doesn't seem to work
};
}
}
ko.applyBindings({
myFunction: function() {
document.write("BAM!");
}
});