首页 > 解决方案 > MenuButton 不会打开菜单

问题描述

我很困惑为什么我的 qx.ui.form.MenuButton 不会打开我正在应用的菜单。谁能告诉我我必须犯的愚蠢错误?

qx.Class.define("app.ui.files.FilesListPanel", {
    extend: qx.ui.container.Composite,

    construct: function() {
        this.base(arguments);
        this.setWidth(350);

        var datasetsMenu = new qx.ui.menu.Menu();
        datasetsMenu.add(new qx.ui.menu.Button("Test 1"));
        datasetsMenu.add(new qx.ui.menu.Button("Test 2"));

        var datasetsMenuButton = new qx.ui.form.MenuButton("Select dataset", null, datasetsMenu);

        this._list = new qx.ui.form.List();

        this.setLayout(new qx.ui.layout.VBox());
        this.add(datasetsMenuButton);
        this.add(this._list, {flex: 1});
    }
}

标签: javascriptqooxdoo

解决方案


这似乎在操场上按预期工作,在 Linux 上的 Chrome 66 中。请粘贴以下代码代替http://playground.qooxdoo.org上的默认示例:

qx.Class.define("app.ui.files.FilesListPanel", {
  extend: qx.ui.container.Composite,

  construct: function() {
    this.base(arguments);
    this.setWidth(350);

    var datasetsMenu = new qx.ui.menu.Menu();
    datasetsMenu.add(new qx.ui.menu.Button("Test 1"));
    datasetsMenu.add(new qx.ui.menu.Button("Test 2"));

    var datasetsMenuButton = new qx.ui.form.MenuButton("Select dataset", null, datasetsMenu);

    this._list = new qx.ui.form.List();

    this.setLayout(new qx.ui.layout.VBox());
    this.add(datasetsMenuButton);
    this.add(this._list, {flex: 1});
  }
});

var flp = new app.ui.files.FilesListPanel();
this.getRoot().add(flp, { edge : 10 });

当我单击按钮时,它会按预期显示两个菜单项。如果它对您不起作用,请说明您正在运行的操作系统和版本,以及浏览器和版本......或者如果我误解了您的需求,请解释与我描述的不同的行为是什么期待。


推荐阅读