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