【问题标题】:Calling the method provided in HTML in Knockout custom bindinghandler在 Knockout 自定义 bindinghandler 中调用 HTML 中提供的方法
【发布时间】:2012-12-17 16:27:48
【问题描述】:

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

【问题讨论】:

    标签: knockout.js custom-binding hammer.js


    【解决方案1】:

    调用valueAccessor 只是让您可以访问绑定中设置的对象。既然是函数,你要调用它,就得调用valueAccessor的调用结果。

    ko.bindingHandlers.tap = {
        'init': function(element, valueAccessor) {
            var tap = new Hammer(element);
            var value = valueAccessor(); // get the value (the function)
            tap.ontap = function(ev){
                //call the method provided in HTML, in this case doSomething();
                value(); // call the function
            };
        }
    }
    

    Updated fiddle

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2018-06-03
      相关资源
      最近更新 更多