的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