2016-09-28 4 views
0

я следующее переопределение в MyPackage \ переопределяет \ окно \ Window:ExtJs5 переопределение потери слушателей

Ext.define('myPackage.window.Window', { 
    override: 'Ext.window.Window', 

    listeners: { 
     beforeshow: function (window) { 
      console.log('before show'); 
     } 
    } 
}); 

я затем использовать этот код:

Ext.define('myApp.view.login.Login', { 
    extend: 'Ext.window.Window', 
    xtype: 'login', 

    requires: [ 
     'myApp.view.login.LoginController', 
     'Ext.form.Panel' 
    ], 

    controller: 'login', 

    title: 'Login', 

    closable: false, 
    autoShow: true, 
    resizable: false, 

    listeners: { 
     show: function() { 
      console.log('in show'); 

     } 
    }, 

    items: { 
     ... snipped for brevity; a couple of textfields and a button 
     ... 
    } 
}); 

Проблема состоит в том, что в то время как Событие 'show' в 'myApp.view.login.Login' отлично работает, событие «beforeshow» в переопределении («myPackage.window.Window») никогда не срабатывает.

Если я удаляю слушателей из 'myApp.view.login.Login', тогда произойдет событие 'beforeshow' в 'myPackage.window.Window' (я вижу все это с выходом console.log).

Что я не понимаю, почему? Я, вероятно, пропустил что-то довольно простое.

Любая помощь с этим очень ценится. Благодаря!

ответ

0

вы должны добавить слушателя после инициализации окна. Я еще не тестировал его. но я уверен, что он должен решить вашу проблему.

например:

Ext.define('myApp.view.login.Login', { 
    extend: 'Ext.window.Window', 
    xtype: 'login', 

    requires: [ 
     'Ext.form.Panel' 
    ], 

    title: 'Login', 
    width: 300, 
    height: 300, 
    closable: true, 
    autoShow: true, 
    resizable: false, 
    initComponent: function() { 
     var me = this; 
     Ext.apply(me, { 
      listeners: { 
       show: function() { 
        console.log('in show'); 

       } 
      }, 

      items: [ 
       { 
        xtype: 'textfield', 
        width: 300 
       } 
      ] 
     }); 

     me.callParent(arguments); 
    } 
}); 
+0

Это работало замечательно - огромное спасибо! –