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

时间:2012-09-14 10:13:29

标签: javascript extjs extjs4 extjs4.1

我需要在运行时添加一个新创建的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 method添加项目;但是在运行时菜单项没有任何反应。即使调试显示新项目实际上已添加到Menu实例的items配置中。

然而,在运行时使用remove method确实有效。

问题:如何在运行时显示新添加的MenuItem?我错过了什么?

更新:以上代码有效;我有一个有缺陷的switch语句导致另一个通过逻辑,删除最后创建的menuItem。

1 个答案:

答案 0 :(得分:5)

评论提升

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,当您查看menu时菜单将面板作为默认类型,但根据menuitem API它似乎是menuitem有点混乱。