ExtJS:在运行时将新的 MenuItem 添加到 Menu 实例



我需要在运行时添加一个新创建的 MenuItem;所以我的代码目前看起来像:

var myMenu = myCmp.query('mymenu')[0]; // retrieve my only Menu object
var menuItem = Ext.create('Ext.menu.Item', {
    itemId: 'myItemId', text: 'textGoesHere'
});
myMenu.add(menuItem);

我正在使用add方法来添加项目;但是菜单项在运行时没有任何变化。即使调试显示新项实际上已添加到 Menu 实例的items配置中。

但是,使用 remove 方法在运行时确实有效。

问:如何使新添加的菜单项在运行时显示?我错过了什么?

更新:上面的代码有效;我有一个有缺陷的 switch 语句,它导致再次通过逻辑,删除了上次创建的 menuItem。

注释提升

OP写道

好的,我跟踪问题;我有一个有缺陷的开关语句,即 导致再次通过逻辑,删除上次创建的 菜单项。我仍然会将您的答案标记为正确,因为它也有效 (通过传递配置 obj)。


此示例适用于:

var menu = Ext.create('Ext.menu.Menu', {
   width: 100,
   height: 100,
   floating: false,  // usually you want this set to True (default)
   renderTo: Ext.getBody(),  // usually rendered by it's containing component
   items: [{
       text: 'icon item',
       iconCls: 'add16'
   },{
       text: 'text item'
   },{
       text: 'plain item',
       plain: true
   }]
});
menu.add({text:'test'});

我不太确定,但根据 API,当您查看菜单时,菜单面板为默认类型,但根据菜单项 API
这似乎是菜单项,这可能有点令人困惑。

最新更新