考虑到我在我的应用程序中创建的网格:
{
xtype: 'ordergrid',
itemId: 'ordergrid',
titleBar: {
shadow: false,
items: [{
align: 'right',
xtype: 'button',
text: 'Update status',
stretchMenu: true,
menu: {
itemId: 'status_menu',
defaults: {
handler: 'updateStatus'
},
indented: false,
items: [{
text: 'test1',
value: 'test1'
}, {
text: 'test2',
value: 'test2'
}, {
text: 'test3',
value: 'test4'
}]
}
}]
},
定义ordergrid
为:
extend: 'Ext.grid.Grid',
xtype: 'ordergrid',
我希望动态修改items
。menu
我首先尝试通过商店进行此操作:
menu: {
itemId: 'status_menu',
defaults: {
handler: 'updateStatus'
},
indented: false,
store: { type: 'status' }
虽然这似乎不起作用。然后我尝试通过组件查询访问此菜单,在init
某些控制器的功能期间:
Ext.define('BinkPortalFrontend.view.main.OrderController', {
extend: 'Ext.app.ViewController',
alias: 'controller.order',
init: function () {
console.log('..... initializing ......');
const menus = Ext.ComponentQuery.query('ordergrid #status_menu');
const menu = menus[0];
menu.setItems([{
text: 'some',
value: 'some'
}, {
text: 'new',
value: 'mew'
}]);
},
};
然而,这会返回一个错误:“无法读取未定义的属性 'setItems'” 调试显示了明显的问题:它没有找到任何菜单。
更重要的是,即使是“包罗万象”的查询
Ext.ComponentQuery.query('menu');
或者
Ext.ComponentQuery.query('#status_menu');
显示一个空数组:那么发生了什么?(我肯定会从初始加载中看到菜单)。