刚开始使用Dojo.我想将一些自定义参数传递给事件处理程序.在jQuery中,你可以这样做:
$('#button').click({ customData: 'foo' },handlerFunction);
并且可以从handlerFunction访问customData,如下所示:
function handlerFunction(event) { console.log(event.data.customData); }
我正在将一些jQuery代码迁移到Dojo.如何将这些参数传递给Dojo事件处理程序?
解决方法
好吧,通常,闭包允许您将“隐藏”参数传递给函数:
function make_event_handler(customData){ return function(evt){ //customData can be used here //just like any other normal variable console.log(customData); } }
所以在dojo中连接事件时:
dojo.connect(node,'onclick',make_event_handler(17));
我喜欢的另一种可能性是使用dojo.partial / dojo.hitch为您创建闭包.
function event_handler(customData,evt){ /// } dojo.connect(node,dojo.partial(event_handler,17))
请注意,所有这些都需要在创建事件处理程序的同时记住额外的参数.我不知道你是否可以更直接地翻译JQuery代码,因为这需要额外的evt变量按摩,我不认为dojo会这样做.