多事件绑定快捷方式

时间:2012-05-03 10:59:18

标签: javascript data-binding javascript-events knockout.js

当我将当前元素绑定到knockout中的多个动作时,我正在做的是:

data-bind="event: { click: doAction,
                    touchend : doAction}"

我的问题是: 绑定到操作时是否可以使用某种快捷符号?

我希望有类似的东西:

data-bind="event: {click, touchend : doAction}"

2 个答案:

答案 0 :(得分:5)

没有内置的快捷方式可以执行此操作,但使用自定义绑定非常容易使data-bind更清晰。

您可以采取几种方法。一个特定于click和touchend的解决方案是:

ko.bindingHandlers.clickAndTouch = {
    init: function(element, valueAccessor, allBindingsAccessor, data) {
         var action = valueAccessor(),
             newValueAccessor = function() {
                 return {
                     click: action,
                     touchend: action
                 }                     
             };

         ko.bindingHandlers.event.init.call(this, element, newValueAccessor, allBindingsAccessor, data);      
    }        
};

然后,你会像它一样绑定它:

data-bind="clickAndTouch: doAction"

答案 1 :(得分:1)

由于至少Knockout 2.1.0(它仍然适用于3.4.2)可以使用:

data-bind="event: {'click touchend': doAction}"