2011-09-22 4 views
0

여기 '보기'인 모달 창과 함께 간단한 예제가 있습니다. 창을 닫는 창 안에 버튼이 있기를 원하기 때문에 게으른 사용자는 오른쪽 상단의 'X'를 클릭 할 필요가 없습니다.Extjs 4.0 MVC - 컨트롤러 내에서보기를 닫는 방법?

내 문제는 컨트롤러 내에서 뷰를 참조하는 방법을 모르겠다는 것입니다. MVC가 아닌 세계에서는 버튼 처리기에서 'window.close()'를 수행합니다. 어떤 아이디어? 감사!

보기

Ext.define('AM.view.testwindow.window', { 
    extend: 'Ext.window.Window', 
    alias: 'widget.TESTwindow', 
    title: 'TEST Window', 
    layout: 'border', 
    width: 1000, height: 400, 
    minimizable: true, 
    maximizable: true, 
    closeAction: 'destroy', 
    initComponent: function() { 
     this.items = [ 

     {xtype: 'gridpanel', region: 'center', // grid in the window 
     store: 'Equipments', 
     columns: [ 
      { text: 'Equip ID', dataIndex: 'EquipmentID' } 
      , { text: 'StationID',  dataIndex: 'StationID' } 
     ], 

     dockedItems: [{ 
      xtype: 'toolbar',   // Grid's toolbar 
      items: [ 
      { 
        xtype: 'button',    /* Close button to close the window */ 
        text: 'Close Window', 
        itemId: 'btnTestClose' 
       } 
      ] 
     } 
     ] 
    } 
    ]; 
    this.callParent(arguments); 
} 
}); 

컨트롤러 버튼 핸들러 내에서 '이'의

Ext.define('AM.controller.testwindow', { 
    extend: 'Ext.app.Controller', 
    stores: ['Equipments', 'Stations'], 
    models: ['Equipment'], 
    views: ['testwindow.window', 'testwindow.Grid'], 
    refs: [ 
    {  ref: 'TESTgrid',  selector: 'TESTgrid' }, 
     { ref: 'testwindow', selector: 'testwindow' } 
    ], 

    init: function() { 

     this.control(
     { 
      '#btnTestClose': { 
       click: function (butt, e, options) { 
        alert('close handler!'); 
        this.getTestwindowWindowView().close(); // this fails. What should I do? ComponentQuery ? 
       } 
      } 

     } 
     ) 
    } 
} 
); 

범위

Scope of 'this' from within Button handler

답변

1
this.getTestwindow().close(); 

:

refs: [ 
    { ref: 'TESTgrid',  selector: 'TESTgrid' }, 
    { ref: 'TESTwindow', selector: 'testwindow' } 
], 

이 당신에게 당신이 필요로하는 자동 생성 된 게터을 줄 것이다 :합니다 (widget 부분 제외) 별칭 TESTwindow, 아니면 긴 이름 testwindow.window 일치해야합니다 검사 창에당신의 ref 게터는 get과 대문자 첫 글자가있는 참조 선택기로 구성됩니다.

+0

예 .... 어제 밤에 이것을 알아 냈습니다. 심판은 구성 요소에 액세스하기위한 단순한 방법 일 뿐이지 만 실제로는 구성 요소에 대한 하드 와이어 참조를 허용한다고 생각했습니다. 귀하의 답변 주셔서 감사합니다! – amackay11

-1
refs: [ 
    { ref: 'TESTgrid',  selector: 'TESTgrid' }, 
    { ref: 'win', selector: 'testwindow' } 
], 

Try this 

this.getWin().close(); 


ready ok 
+0

왜이 코드가 질문에 대답하는 이유/방법에 대한 설명을 [편집]하십시오. 코드 전용 답변은 설명이있는 코드에서 배우기가 쉽지 않으므로 권장하지 않습니다. 설명이 없으면 수행중인 작업, 코드의 변경 사항, 코드가 질문에 응답하는 경우 등을 이해하는 데 많은 시간과 노력이 필요합니다. 설명은 응답에서 배우려고하는 사람과 평가할 때 모두 중요합니다. 그것이 유효한지, 또는 투표 할 가치가 있는지 확인하기 위해 답하십시오. – Makyen

+0

사용자가 이해할 수 있도록 설명/의견을 작성하십시오. –