Javascript ExtJS:在运行时向菜单实例添加新菜单项
我需要在运行时添加一个新创建的菜单项;因此,我的代码目前看起来像:Javascript ExtJS:在运行时向菜单实例添加新菜单项,javascript,extjs,extjs4,extjs4.1,Javascript,Extjs,Extjs4,Extjs4.1,我需要在运行时添加一个新创建的菜单项;因此,我的代码目前看起来像: 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); 我正在使用添加项;但是菜单项在运行时没有发生任何变化。即
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);
我正在使用添加项;但是菜单项在运行时没有发生任何变化。即使调试显示新项实际上已添加到菜单实例的配置中
但是,在运行时,使用会起作用
问题:如何在运行时显示新添加的菜单项?我错过了什么
更新:上述代码有效;我有一个有缺陷的switch语句,导致再次通过逻辑,删除了上次创建的menuItem。注释弹出 OP写道
好的,我跟踪问题;我有一个有缺陷的switch语句 导致再次通过逻辑,删除上次创建的 menuItem。尽管如此,我还是会把你的答案标记为正确的 (通过传递配置对象)
此示例适用于:
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,当您查看时,菜单的默认类型是panel,但根据
这可能有点混乱。您是否尝试仅应用配置?也许有虫子?基本上,这应该是开箱即用的,不需要任何额外的调用。@sra我同意你的看法,它应该是开箱即用的。“仅应用配置”是什么意思?谢谢。我发布了一个有效的例子。如果您需要其他信息/帮助,请告诉我确定我跟踪问题;我有一个有缺陷的
switch
语句,它导致再次通过逻辑,删除了上次创建的menuItem。尽管如此,我还是会将你的答案标记为正确的(通过传递config obj)。@sra你能更新答案,在顶部说OP的答案按原样工作吗?第一次来到这里时,我没有读到这些评论,我开始了一场白费力气的追逐,试图在作为配置对象添加的菜单项上强制进行即时渲染。为了澄清这一点,OP的方法确实起了作用。