Agility.js文档似乎很清楚地表明 Agility 对象可以接受任何有效的 jQuery 事件类型:
通过 jQuery 的事件 API 支持通常的 DOM 事件,例如 click、dblclick、mouseenter 等。请查阅 jQuery 的 API 以获取支持的事件列表。
但是在文档和我见过的所有其他示例中,绑定到事件的所有控制器函数都没有参数。例如,以下代码段直接取自在线文档:
var button = $$({msg:'Click me'}, '<button data-bind="msg"/>', {
'click &': function() {
this.model.set({msg:"I've been clicked!"});
}
});
$$.document.append(button);
这里附加到click
事件的 lambda 显然是无参数的。这对于普通的 jQuery 事件来说是可行的,但是要使用 jQueryUI 事件,每个事件函数都有关联的数据。例如,如果我想使用Draggable和Droppable小部件,则drop()
在 Droppable 上调用该函数以指示已将 Draggable 拖放到它上面,并且我需要参数来drop(event, ui)
确定它是哪个 Draggable。
有什么方法可以声明我的控制器事件处理程序,以便我可以访问这些参数?或者,还有其他方法可以做我想做的事情吗?除了“它被触发”之外,没有得到关于控制器上事件的任何信息似乎是一个真正的缺点。我什至不确定是否可以扩展 Agility 以便它可以处理标准 DOM 以外的事件,尽管从我对代码的阅读中我看不出有任何理由不应该这样做。
Agility 确实trigger()
为客户端代码提供了触发事件的功能,该功能允许使用事件类型以外的参数。我想以某种方式将其连接到 jQueryUI 事件,但我不太明白如何。trigger()
更重要的是,如果控制器看不到它们,为什么您甚至可以将参数传递给它们?