2014-06-06 34 views
0

我有這個與ExtJS 4.2.1奇怪的問題。控制器的聽衆從其他視圖捕捉事件(面板點擊)

我有一個控制器的偵聽器從它不應該看到事件。

這裏的所述控制器:

Ext.define('Customer_Portal_UI.controller.NavigationMenu', { 
    extend: 'Ext.app.Controller', 
    init: function() { 
     this.control({ 
      'panel': { 
       render: function (panel) { 
        panel.body.on('click', function (panel, e) { 
         alert('onclick'); 
        }); 
       } 
      } 


     }); 

    } 
}); 

這是控制'這樣的觀點:

Ext.define('Customer_Portal_UI.view.NavigationMenu', { 
    extend: 'Ext.form.Panel', 
    alias: 'widget.navigationmenu', 
    region: 'west', 
    layout: 'fit', 
    ui: 'cssmenu', 
    loader: { 
     autoLoad: true, 
     url: '/resources/notloggedin.html' 
    } 

}); 

但它也抓住面板點擊從這樣的觀點:

Ext.define("Customer_Portal_UI.view.MainContent", { 
    extend: 'Ext.form.Panel', 
    alias: 'widget.maincontent', 
    region: 'center', 
    layout: 'card', 
    border: false, 
    activeItem: 0, 
    requires: ['Ext.grid.Panel'], 
    initComponent: function() { 

     this.items = [ 
           { 
            xtype: 'panel', 
            title: '' 
           }, 
           { 
            xtype: 'gridpanel', 
            id: 'contactlistgrid', 
            store: Ext.data.StoreManager.lookup('contactStore'), 
            columns: [ 
        .... 
            ], 
            features: [{ 
             ftype: 'grouping', 
             groupHeaderTpl: ['{columnName}: {name} - ({rows.length} employees)'], 
             hideGroupedHeader: true, 
             startCollapsed: false 
            }], 
            viewConfig: { id: 'contactlistgridview' } 
           }, 
           { 
            xtype: 'gridpanel', 
            id: 'caselistgrid', 
            store: Ext.data.StoreManager.lookup('caseStore'), 
            columns: [ 
               { text: 'Title', dataIndex: 'title' }, 
               { text: 'Description', dataIndex: 'description' }, 
               { text: 'Ticket number', dataIndex: 'ticketnumber' } 
            ], 
            viewConfig: { id: 'caselistgridview' } 
           } 
       ] 


     this.callParent(arguments); 
    } 
}); 

你看到任何明顯的原因爲什麼會這樣做? panel確實是我點擊的面板,而不是文檔正文,這可能解釋了原因。

注意,在不要再追從其它面板點擊,剛剛從MainContent來看,它不應該...

感謝。

+0

您的選擇器說'panel',這意味着它將匹配面板(或子類)的每個組件。你需要改進你的選擇器才能匹配相關的東西。 –

+0

@EvanTrimboli感謝您的評論,找到了解決辦法。 –

+0

@EvanTrimboli我不明白爲什麼控制器會從其他視圖的「面板」捕獲事件。控制器在設計時是否會這樣做,我們只是爲了組織目的而將邏輯分離到不同的物理控制器文件中?謝謝。 –

回答

相關問題