У нас стоит задача создать ExtJS объект без применения наследования от Ext.Base или Ext.Component и чтобы можно было использовать события.
Для реализации данной задачи нам поможет объект Ext.mixin.Observable
Пример инициализации класса:
Ext.define('Employee', {
    mixins:['Ext.mixin.Observable'],
    
    config: {
        name: ''
    },
    
    constructor: function(config) {
        // вот тут вот и вся магия!
        this.mixins.observable.constructor.call(this, config);
    },
    
    callFire: function(){
        this.fireEvent('fire');
    }
});
Пример вызова:
Ext.create('Employee', {
    listeners:{
        fire: function(){
            alert(0);
        }
    }
}).callFire(); // вызываем метод для события
Удаление событий:
var listeners = cmp.on({
    scope: cmp,
    render: cmp.onRender
});
listeners.destroy();
// или
cmp.un({
    scope: cmp,
    render: cmp.onRender
});
Параметры в listeners:
...
listeners: { // это опции
    scope: this,
    ...
}
...
- scope: any — контекст обработки
 - single: true — событие будет вызвано только один раз
 - buffer: number — ограничение по количеству возникновения событий
 - element: string — имена контейнера для прослушивания (body, element, и т.д.)
 
Транзитные события
this.relayEvents(this.getStore(), ['load']); this.storeRelayers = this.relayEvents(this.getStore(), ['load', 'clear'], 'store'); Ext.destroy(this.storeRelayers);