Extjs 在控制器中显示上下文菜单
我有两个Extjs 在控制器中显示上下文菜单,extjs,Extjs,我有两个视图——一个用于树面板,另一个用于上下文菜单(定义为fileeditor.view.fileeditorcontextmenu)。我有一个控制器,它在其中侦听itemcontextmenu事件。我不知道应该如何创建(在何处、在什么阶段?)以及如何显示我的文件编辑器或ContextMenu。侦听器的部分如下所示: itemcontextmenu:function(view, rec, item, index, event){ event.stopEvent(); ... W
视图
——一个用于树面板,另一个用于上下文菜单(定义为fileeditor.view.fileeditorcontextmenu
)。我有一个控制器
,它在其中侦听itemcontextmenu
事件。我不知道应该如何创建(在何处、在什么阶段?)以及如何显示我的文件编辑器或ContextMenu
。侦听器的部分如下所示:
itemcontextmenu:function(view, rec, item, index, event){
event.stopEvent();
... What should I do next? How should I instantiate and show a context menu
}
编辑
我研究了这段代码,它的功能与我想要的类似,但问题是-我找不到
getContextMenu()
-这是问题中最重要的一个实现。这是打开上下文菜单的示例代码(这会给你一些想法):
我想知道这种方法是否会导致内存泄漏。因为每次用户右键单击时,都会创建上下文菜单的新实例。是否可以创建一次,然后重新使用?离开菜单时,您将关闭菜单。检查更新的答案。
itemcontextmenu: function(view, record, item, index, e, eOpts) {
var position = e.getXY(),
menu = Ext.create('FilesEditor.view.FilesEditorContextMenu', {
id: 'myMenu',
items: [{
text: 'Some Menu Item',
handler: function() {
// do your stuff
}
}],
listeners: {
mouseleave: function() {
// close menu
menu.close();// check documentation https://docs.sencha.com/extjs/5.1/5.1.0-apidocs/#!/api/Ext.menu.Menu-method-close
}
}
});
e.stopEvent(); // prevent the browser default context menu
menu.refView = view; // passing the view reference to the menu so that we can get a handle of the grid inside the menu item handler
menu.showAt(position);
}