单击模拟菜单项

时间:2014-01-06 11:56:27

标签: javascript extjs menu sencha-architect

我有一个包含3个项目的菜单。如果某个条件为真,我想在呈现页面之前模拟项目单击,例如设置要选择的默认操作。我动态创建菜单。

Store.each(function(n) {
    var rec = n;

        var menuItem = new Ext.menu.Item({
            text: rec.data.name,
            value: rec.data.url,

        });

        Menu.add(menuItem);

        //if some condition set item as if it was clicked(selected)

});

我想将菜单中的某个项目设置为处于活动状态,就像点击它一样。

1 个答案:

答案 0 :(得分:0)

如果您使用.fireEvent()方法,则可以在菜单项上触发click事件。

所以,

if(some condition){
    menuItem.fireEvent('click');
}

此外,您需要在menuItem中使用一个侦听器来捕获此事件

var menuItem = new Ext.menu.Item({
    text: "menu Item",
    listeners:{
        click:function(){ alert("you clicked the menu item"); }   
    }
});

这是一个工作示例: http://jsfiddle.net/9Lpg7/

最后,我想补充说fireEvent()我不是完全必要的。由于menuItem具有handler配置,您可以在其他地方简单地定义一个函数,并将其用作menuItem处理程序,并在条件为真时调用它。

var myClickFunction = function(){ alert("cooler way"); }

var menuItem = new Ext.menu.Item({
    text: "menu Item",
    handler:myClickFunction
});

if(some condition){
    myClickFunction();
}