如何从视图中的菜单项中激发事件,并在ExtJS中的控制器中捕获它

How to fire event from menu item in view and catch it in controller in ExtJS?

本文关键字:控制器 并在 ExtJS 视图 菜单项 事件      更新时间:2023-09-26

我在ExtJS中有一个要求,在单击菜单项时,我必须从视图中激发一个事件,并在控制器中捕获它。

以下是我的方法,但不起作用。调试时,控制一直到火灾事件,但它没有在控制器中捕获(不转到onResetAction功能)

请帮帮我。

视图:

new Ext.menu.Menu ({
                    width: 150,
                    height: 100,
                    itemId: 'menuItem123',
                    margin: '0 0 0 0',
                    items: menuOptions,
                    listeners:{
                        'click': function(menu, menuItem, e, eOpts)
                        {
                            if(menuItem.text === 'Inherit') {
                                 var viewConfig = {
                                            'viewName': 'Preference',
                                            'preferenceElement': preferenceElement,
                                            'scope': menu
                           };
                           menuItem.fireEvent('resetData', viewConfig);
                           }
                            this.hide();
                        }
                    }
                });

控制器:

init: function(application) {
    this.listen({
        component: {                
            'container[itemId=menuItem123] menuItem[text=Inherit]': {
                'resetData': this.onResetAction,
                'refreshLogoData': this.onRefresh
            }
        }
    }); 
},
onResetAction: function(viewConfig) {
  var me = this;
  /* some function*/
},

我想您的选择器不工作,您可以使用Ext.ComponentQuery.query()Ext.all()进行检查。

如果这是问题所在,请尝试将选择器从:更改为

'container[itemId=menuItem123] menuItem[text=Inherit]'

至:

'#menuItem123 menuItem[text=Inherit]'

尝试这个

init: function(application) {
    var me = this;
    this.control({
        '#menuItem123 menuitem': { //menuitem all small
            resetData: me.onResetAction,
            refreshLogoData: me.onRefresh
        }
    }); 
},
onResetAction: function(viewConfig) {
  var me = this;
  /* some function*/
},

这是一把有类似图案的小提琴:https://fiddle.sencha.com/#fiddle/13p7

相关文章: