여기 '보기'인 모달 창과 함께 간단한 예제가 있습니다. 창을 닫는 창 안에 버튼이 있기를 원하기 때문에 게으른 사용자는 오른쪽 상단의 '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 ?
}
}
}
)
}
}
);
범위
예 .... 어제 밤에 이것을 알아 냈습니다. 심판은 구성 요소에 액세스하기위한 단순한 방법 일 뿐이지 만 실제로는 구성 요소에 대한 하드 와이어 참조를 허용한다고 생각했습니다. 귀하의 답변 주셔서 감사합니다! – amackay11