javascript - 单例菜单面板在 extjs 5 中不起作用

标签 javascript extjs menu extjs4 extjs5

我正在使用 extjs 4,其中我使用单例模式为工具栏数量创建了菜单面板,它运行良好,但是当我将应用程序从 extjs 4 移动到 extjs 5 时,它停止工作,意味着菜单面板被隐藏当鼠标移到它上面时。我在 fiddle 上创建了一个示例,请给我一些解决这个问题的方法。 fiddle 链接:singleton menu panel example

谢谢, 桑迪

最佳答案

在 Ext JS 5 中,菜单似乎链接到其所有者组件(例如按钮),并且不能在所有者之间共享。这就是为什么在您的示例中,问题仅发生在第一个和第二个面板上,而不是最后一个(第三个)面板上 - 它的按钮成为菜单的“合法”所有者,因此它在此处工作正常。

实际上没有必要在您的示例中共享菜单。不要重复相同的代码三次,只需保留一个停靠工具栏,仅在一个位置使用菜单,让一切变得更加智能。参见示例:https://fiddle.sencha.com/#fiddle/s1b

更新

如果需要在按钮之间共享菜单,可以通过使用自定义按钮来实现,该按钮在每个菜单显示请求上强制确保其菜单属于其自身:

Ext.define('SharingMenuButton', {
    extend: 'Ext.button.Button',
    alias: 'widget.sharingmenubutton',
    showMenu: function() {
        if (this.menu.ownerCmp !== this) {
            this.setMenu(this.menu, false);
        }
        return this.callParent(arguments);
    }
});

查看您使用该示例的示例:https://fiddle.sencha.com/#fiddle/s1g

关于javascript - 单例菜单面板在 extjs 5 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31956764/

相关文章:

ruby-on-rails - Rails 3 树形数据结构

jquery - Vimeo 风格下拉内容/下拉菜单

android - appcompat-v7 r21/r22 : force show overflow menu icon

javascript - 当所有内容都已完成下载时检测到

javascript - 未按预期获得虚拟 json 响应,但出现错误

javascript - 应用模板后,sencha 触摸面板不会滚动

javascript - ExtJS Ext.Button 复用

javascript - 如何通过 Javascript 创建此开关行为?

javascript - 将新属性分配给具有卡住原型(prototype)的空对象

javascript - 在 Ext.grid.Panel 列中显示之前修改文本字段中的值