extjs-gpl
Version:
GPL licensed version of Sencha Ext JS
55 lines (45 loc) • 1.54 kB
JavaScript
/**
* @private
*/
Ext.define('Ext.Evented', {
alternateClassName: 'Ext.EventedBase',
mixins: [
'Ext.mixin.Observable'
],
initialized: false,
constructor: function(config) {
this.mixins.observable.constructor.call(this, config);
this.initialized = true;
},
onClassExtended: function(cls, data) {
if (!data.hasOwnProperty('eventedConfig')) {
return;
}
var config = data.config,
eventedConfig = data.eventedConfig,
name, cfg;
if (config) {
Ext.applyIf(config, eventedConfig);
} else {
cls.addConfig(eventedConfig);
}
/*
* These are generated setters for eventedConfig
*
* If the component is initialized, it invokes fireAction to fire the event as well,
* which indicate something has changed. Otherwise, it just executes the action
* (happens during initialization)
*
* This is helpful when we only want the event to be fired for subsequent changes.
* Also it's a major performance improvement for instantiation when fired events
* are mostly useless since there's no listeners
*/
//TODO: Move this into Observable
for (name in eventedConfig) {
if (eventedConfig.hasOwnProperty(name)) {
cfg = Ext.Config.get(name);
data[cfg.names.set] = cfg.eventedSetter || cfg.getEventedSetter();
}
}
}
});