单击Ext.menu.Menu中的菜单项

时间:2015-04-15 15:39:23

标签: javascript extjs

我有一个按钮,一旦点击,将展开一个菜单项,我希望能够通过java脚本控制台以编程方式单击其中一个菜单项。这是我点击按钮的方法,但点击Ext.menu.Menu需要一点帮助

var fireButton=Ext.ComponentQuery.query('button[itemId=buttonID]')[0]; //find button id
fireButton.fireEvent('click'); //open button/submenu

var ok = Ext.ComponentQuery.query('menuitem')[0]; //多余的菜单项

//如何点击菜单项?

这是我的菜单:

menuButton: new Ext.menu.Menu({
    items: [
       {text: 'OK', value: 'ok'},
       {text: 'Next', value: 'next'},
    ],
    listeners: {
        click: 'onClickMenuButton',
    }

onClickMenuButtonItem: function(menu, item){
    this.makeVisible(menu, item);
},

makeVisible: function(menu, item){
        var menuItem = Ext.getCmp(item.value);
        menuItem.isVisible()){
        menuItem.setVisible(false);
        item.setIconCls('plusSign');
}),

var openMenu = Ext.ComponentQuery.query('button[itemId=buttonID]')[0];
openMenu.fireEvent('click', openMenu);
var clickMenu = Ext.ComponentQuery.query("menu")[0]
clickMenu.items.filter('text','OK').fireEvent('click'); //Don't work!

2 个答案:

答案 0 :(得分:1)

我希望这个小提琴有点像你想要的那样 -

https://fiddle.sencha.com/#fiddle/lai

请注意,我在其中一个动态创建的项目中提供cls: 'test',然后我使用Ext.query(".test");来获取该项目。

您还可以使用此查询搜索menuitem -

var item = Ext.ComponentQuery.query('menuitem{text.search( \'Item 1\' )!=-1}');
item[0].fireEvent('click')

菜单项必须将点击监听器注册为 -

{
    text: 'Item 1' ,
    iconCls: 'add16',
    cls: 'test',
    listeners: {
        click: function(){
            console.log('clicked')
        }
    }
}

答案 1 :(得分:0)

xtype:menuitem 有一个名为 - down的方法 - 它将为您提供第一个孩子。我不确定您使用的是哪个版本,因此我会链接到最新的文档;但是,4.x也有这种方法。

值得注意的是down也可以将选择器作为参数。

for ex(使用设置itemid的cmp):

this.down("#itemidvaluehere")

修改

显示菜单的更新后

更新:

我会从控制台尝试这样:

var mn=Ext.ComponentQuery.query("menu")[0]
mn.items.filter('text','OK').fireEvent('click');