2016-01-13 20 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,如果這回答你的問題,請將此標記爲對你的問題的回答以關閉該線程。爲此,請在您的問題上點擊複選標記。 –

相關問題