2016-01-13 22 views
0

我在ExtJS中有一个要求,其中,点击菜单项时,我必须从视图中触发事件并将其捕获到控制器中。如何从视图中的菜单项触发事件并在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*/ 

}, 

回答

0

我猜你的选择不工作,你可以使用Ext.ComponentQuery.query()Ext.all()检查。

如果是这样的问题,请尝试更改选择:

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

到:

'#menuItem123 menuItem[text=Inherit]' 
0

试试这个

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

+0

谢谢桂尔梅洛佩斯.....它的工作:)非常感谢。 –

+0

@AmithSwamy,如果这回答你的问题,请将此标记为对你的问题的回答以关闭该线程。为此,请在您的问题上点击复选标记。 –

相关问题