我的ExtJs菜单定义如下。我在菜单项'hookMethod'和'handlerMethod'中添加了两个自定义方法。 'hookMethod'是根据某些条件添加的。我将单个菜单项的click事件冒泡到根菜单。 然后检查是否定义了hook,然后调用'hookMethod',否则直接调用'handlerMethod'。我面临的问题是点击监听器被调用两次,一次用于menuitem,一次用于菜单。另外,什么是e论点。我以为它只会被调用一次菜单,我会有一些方法来检索被点击的实际菜单项。
{
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
},
}]
}
答案 0 :(得分:0)
Ext.menu.Menu
click( menu, item, e, eOpts )
事件有四个参数。
第一个参数是menu
对象本身。
第二个item
参数是单击的菜单项的对象。您可以使用此参数来确定单击菜单中的哪个项目。