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