ExtJS中菜单项中的上下文菜单

时间:2011-03-10 12:22:09

标签: extjs

我有一个包含TreePanel的菜单。用户需要能够使用上下文菜单与TreePanel的节点进行交互。我正在显示附加到TreePanel的contextmenu事件的函数的上下文菜单。

除了:

之外
  1. 如果没有allowOtherMenus: true,显示上下文菜单会导致主菜单以及TreePanel消失;
  2. 在任一菜单上使用allowOtherMenus: true时,当用户单击TreePanel的空白区域时,上下文菜单不会消失。
  3. 我正在寻找让上下文菜单工作的方法,就好像TreePanel不是菜单中的项目一样。

    样机: enter image description here

1 个答案:

答案 0 :(得分:3)

我发现这似乎适用于FF3 / IE8 / Chrome,虽然它可能会产生尚未出现的副作用。

var hide_context_menu = function () { context_menu.hide() };

var context_menu = new Ext.menu.Menu({
    allowOtherMenus: true,
    items: [...],
    listeners: {
        show: function () {
            Ext.getDoc().on('mouseup', hide_context_menu);
        },
        hide: function () {
            Ext.getDoc().un('mouseup', hide_context_menu);
        }
    }
});
当弹出上下文菜单时,

allowOtherMenus: true会阻止MenuMgr隐藏主菜单。将处理程序隐藏到mouseup事件允许处理单击事件。