在extjs4中如何在稍后(from)中调用菜单,而不是在initComponent函数中?
换句话说:如何重新配置现有菜单对象(菜单项)?
Ext.define('My.view.dashboard.CategoryMenu', {
extend: 'Ext.menu.Menu',
alias: 'widget.categorymenu',
id: 'kategoriaMenu',
initComponent: function() {
this.callParent(arguments);
},
fetchMenu: function(categoryId) {
var me=this;
Ext.Ajax.request(
{
url: '/resources/categoryMenu.json',
method: 'POST',
params:
{
id: categoryId
},
success: function(result, request)
{
var jsonData = Ext.decode(result.responseText);
categoryItems=jsonData.items;
Ext.apply(me.items, categoryItems);
}
});
}
});
这是原始代码什么是initComponent初始化的工作代码:
initComponent: function() {
Ext.apply(this, {
items:
[
{
text: 'Recently Added (last 7 Days)',
itemId: 'recentlyAdded'
},
{
text: 'Open Worklist',
iconCls: 'worklist-icon',
itemId: 'openWorklist'
},{
text: 'Open Create Screen',
iconCls: 'open-create-screen-icon',
itemId: 'openCreateScreen'
}
]
});
this.callParent(arguments);
},
这就是我所说的:
...
var ctxMenu = this.getCategoryMenu();
ctxMenu.fetchMenu(record.data.id); // get current menu content
ctxMenu.setPosition(event.getXY());
ctxMenu.show();
...
答案 0 :(得分:0)
不确定Ext4,但它应该与3的概念相同。对于我的应用程序,我必须根据他们右键单击的网格项动态设置菜单项(这是针对ContextMenu,但它应该是相同的)
ctxMenu.items.items[0]
// items.items because you're nested inside a menu
将检索第一个菜单项,并从那里轻松获得其他菜单项(1,2,3)。完成后,您可以使用setText()
。您应该可以访问所有Ext.menu.Item
方法。