的Agility.js documentation似乎很清楚地说,敏捷的对象可以接受任何有效的jQuery的事件类型:Agility.js + jQueryUI的,参数传递给事件处理程序控制器
平时DOM事件,如点击,DBLCLICK,的mouseenter等通过 jQuery的事件API支持。请查阅jQuery的API以获取支持的事件列表。
但是在我看到的文档和所有其他示例中,绑定到事件的所有控制器函数都没有参数。例如,下面的代码段取直出the online docs:
var button = $$({msg:'Click me'}, '<button data-bind="msg"/>', {
'click &': function() {
this.model.set({msg:"I've been clicked!"});
}
});
$$.document.append(button);
这里连接到click
事件显然是无参数的拉姆达。这对于普通的jQuery事件来说工作正常,但为了使用jQueryUI事件,每个事件函数都有相关的数据。例如,如果我想使用Draggable和Droppable窗口小部件,则可以在Droppable上调用drop()
函数来指示Draggable已经被放到它上面,并且我需要参数drop(event, ui)
来确定它是哪个Draggable。
有什么办法来声明我的控制器事件处理程序,以便我可以访问这些参数?另外,还有其他方法可以做我想做的事吗?没有得到任何关于控制器以外的事件的信息,而不是“被解雇”似乎是一个真正的缺点。我甚至不确定是否可以扩展Agility,以便它可以处理除标准DOM之外的其他事件,尽管我从阅读代码时看不到任何理由。
敏捷确实提供了一个trigger()
函数用于触发事件的客户端代码,它允许事件类型以外的参数。不知何故,我想到了jQueryUI事件的接线,但我没有看到如何。更重要的是,如果控制器无法看到它们,为什么甚至可以将参数传递给trigger()
?
谢谢,这工作正常!事实证明''事件'和'ui'参数传递给Agility控制器事件处理程序,因此连接jQueryUI小部件与普通的jQuery没有区别。 – dodgethesteamroller 2013-05-03 22:34:25