ExtJS:在运行时向 Menu 实例添加新的 MenuItem
Posted
技术标签:
【中文标题】ExtJS:在运行时向 Menu 实例添加新的 MenuItem【英文标题】:ExtJS: add new MenuItem to Menu instance at runtime 【发布时间】:2012-09-14 10:13:28 【问题描述】:我需要在运行时添加一个新创建的 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。
【问题讨论】:
您是否尝试过仅应用一个配置?也许有一个错误?基本上这应该是开箱即用的,不需要任何额外的调用。 @sra 我同意你的观点,它应该开箱即用。 “仅应用配置”是什么意思?谢谢。 我发布了一个有效的示例。如果您需要其他信息/帮助,请告诉我 【参考方案1】:评论提升
OP 写的
好的,我会追踪问题;我有一个有缺陷的 switch 语句 导致另一个通过逻辑,删除最后创建的 菜单项。我仍然会将您的答案标记为正确,因为它也有效 (通过传递配置 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 时,Menu 将面板作为默认类型,但根据 menuitem API,它似乎是 menuitem 这可能有点令人困惑。
【讨论】:
好的,我追踪问题;我有一个有缺陷的switch
语句导致另一个逻辑通过,删除了最后创建的menuItem。我仍然会将您的答案标记为正确,因为它也可以正常工作(通过传递配置 obj)。
@sra 您能否更新答案以在最顶部说 OP 的答案 确实有效 原样?我第一次来这里时没有阅读 cmets,然后开始疯狂追逐,试图强制对作为配置对象添加的菜单项进行热切渲染。为了澄清,OP的方法确实工作,完全一样。以上是关于ExtJS:在运行时向 Menu 实例添加新的 MenuItem的主要内容,如果未能解决你的问题,请参考以下文章