Extjs 4.0 MVC - как закрыть вид изнутри контроллера? - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть простой пример с модальным окном, представляющим собой «представление».Я хочу, чтобы внутри окна была кнопка, закрывающая окно, чтобы ленивому пользователю не нужно было нажимать «X» в правом верхнем углу.

Моя проблема в том, что я не знаю, как ссылатьсявид изнутри контроллера.В мире, отличном от 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 ?
                 }
            }

        }
        )
    }
}
);

Область действия this в обработчике кнопок

Scope of 'this' from within Button handler

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Ваш ref в тестовом окне должен соответствовать псевдониму TESTwindow (без части widget) или, возможно, длинному имени testwindow.window:

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

Это даст вам автоматически сгенерированный геттер, который вам нужен:

this.getTestwindow().close();

Получатели состоят из get плюс селектор ссылок с заглавной первой буквой.

0 голосов
/ 25 февраля 2015
refs: [
    {    ref: 'TESTgrid',     selector: 'TESTgrid'   },
    {    ref: 'win',   selector: 'testwindow'  }
],

Try this

this.getWin().close();


ready ok
...