2014-06-06 2 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보기에서, 다른 패널에서 클릭 잡는하지에있어

주 ...

감사합니다.

http://www.fusioncube.net/index.php/sencha-extjs-4-make-any-component-fire-a-click-event/comment-page-1

가 그럼 난 '패널'에 대한 '클릭'을들을 수 있었다 내 컨트롤러 내 않고 (뷰 내에서 하나 개의 패널있다) :

+0

선택기가 '패널'이라고 말하면 패널 (또는 하위 클래스) 인 모든 구성 요소와 일치하게됩니다. 관련성이 높은 항목 만 일치 시키려면 선택기를 세분화해야합니다. –

+0

@EvanTrimboli 의견을 보내 주셔서 감사합니다. –

+0

@EvanTrimboli 컨트롤러가 다른보기에서 '패널'의 이벤트를 잡는 이유를 이해할 수 없습니다. 컨트롤러는 이것을 통해 설계 작업을 수행하며 단순히 조직 목적을 위해서만 다른 물리적 컨트롤러 파일에서 로직을 분리합니다. 감사. –

답변

0

는 수정 여기에서와 같이 두 배이었다 내 선택기를 수정해야합니다.