2013-02-27 52 views
0

所以,我们都知道return true手动将允许默认点击动作元素与click约束力,但如果我有自定义绑定如下:Knockout自定义点击绑定,返回true以防止点击劫持?

ko.bindingHandlers.action = { 
    init: function(element, valueAccessor, allBindingsAccessor, context) { 
     var options = valueAccessor(); 
     var params = options.slice(1); 

     //wrap it in function, with parameter binding 
     var newValueAccessor = function() { 
      return function() { 
       options[0].apply(context, params); 
      }; 
     }; 

     ko.bindingHandlers.click.init(element, newValueAccessor, allBindingsAccessor, context); 
    } 
}; 

这需要N个参数从绑定:

action: [handle, 'open', $index()] 

如何让点击通过? return true in handle在这种情况下不起作用。

+0

我想我的问题是,你为什么想让点击通过? – 2013-02-27 20:36:59

+0

我们并不都知道 - 我总是认为返回false会取消,但返回void不会阻止默认操作 – 2014-07-03 08:18:20

回答

2

你的实际点击处理程序被定义如下:

 return function() { 
      options[0].apply(context, params); 
     }; 

只要改变它,所以它返回所提供的子处理器的值:

 return function() { 
      return options[0].apply(context, params); 
     }; 
相关问题