0
我有我的ExtJs菜單定義如下。我有兩個自定義方法添加到我的菜單項'hookMethod'和'handlerMethod'。 'hookMethod'是根據一些條件添加的。我將單個菜單項的點擊事件提交到根菜單。 然後檢查是否定義了鉤子,然後調用'hookMethod',否則直接調用'handlerMethod'。我面臨的問題是點擊偵聽器被調用兩次,一次用於menuitem,一次用於菜單。另外,什麼是電子爭論。我以爲它只會被調用一次菜單,我將有一些方法來檢索被點擊的實際菜單項。ExtJs氣泡菜單事件
{
xtype: "menu",
listeners: {
click: function(item, e, eopts)
{
if(item.hookMethod) {
item.hookMethod(item.handlerMethod);
}
else {
item.handlerMethod(this);
}
}
},
items: [{
xtype: "menuitem",
text: "Process Record",
bubbleEvents: ['click'],
hookMethod: function(actualMethod)
{
//do some pre-processing here and then call the actual handler
actualMethod(args)
},
handlerMethod: function(args)
{
//Do actual processing
},
}]
}
感謝您的回覆。但爲什麼它被調用兩次?另外4個參數(菜單,項目,e,eopts)僅在第二次調用時出現。但在第一次調用時,它有3個參數(item,e,eopts)。 – kapd
這是因爲您的項目配置中有'bubbleEvents:['click'],'。所以第一個被捕獲的事件來自'menuitem',第二個被捕獲的事件來自'menu'本身。所以刪除你的'bubbleEvents'配置,只聽'menu''點擊'事件。 – Akatum
感謝它的工作。但是,我想如果我將它泡起來,它不會導致menuitem上的點擊? – kapd