Применение событие с Ext.mixin.Observable

У нас стоит задача создать 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);

 

Print Friendly, PDF & Email

Добавить комментарий