我在当前项目中同时使用了 knockout.js 和hammer.js。我在hammer.js 中为'tap' 事件创建了一个自定义绑定处理程序(这也适用于其他事件,例如保持或滑动)。我的问题是,在这个绑定处理程序中,我想调用我在 HTML 的 data-bind 属性中提供的方法。根据淘汰文档,我发现我应该调用 valueAccessor(),但不幸的是,这没有任何作用。我已经创建了这个 Fiddle,它应该给你一个我的问题的清晰例子。感谢你们对我的帮助。
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!");
}
});