Skip to content

Instantly share code, notes, and snippets.

@wilk
Last active December 16, 2015 17:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save wilk/5472503 to your computer and use it in GitHub Desktop.
Save wilk/5472503 to your computer and use it in GitHub Desktop.
[ExtJS] Get listeners of an observable object (Ext.util.Observable): suggested useful method of Ext.util.Observable class.
/* --------------------------------- */
Ext.define ('My.observable.Object', {
mixins: {
observable: 'Ext.util.Observable'
} ,
constructor: function (cfg) {
var me = this;
me.initConfig (cfg);
me.mixins.observable.constructor.call (me, cfg);
me.addEvents (['ciao']);
} ,
/**
* @method getListeners
* Get every listener attached
* @private
*/
getListeners: function () {
var me = this ,
listeners = {};
for (var event in me.hasListeners) {
listeners[event] = [];
if (me.events[event]) {
var listenersList = me.events[event].listeners;
for (var i in listenersList) {
listeners[event].push (listenersList[i].fn);
}
}
else delete listeners[event];
}
return listeners;
}
});
/* --------------------------------- */
/* TEST */
var myObj = Ext.create ('My.observable.Object');
myObj.on ({
first: function (foo) {console.log(foo);} ,
second: function (bar) {console.log(bar);} ,
third: function (kungfoo) {console.log(kungfoo);} ,
fourth: function (foobar) {console.log(foobar);} ,
});
myObj.on ('first', function (kungfoobar) {console.log(kungfoobar);});
console.log (myObj.getListeners ());
var listeners = myObj.getListeners ();
myObj.destroy ();
var myObj2 = Ext.create ('My.observable.Object');
// Attach back every listener
for (var listener in listeners) {
for (var i = 0; i < listeners[listener].length; i++) {
myObj2.on (listener, listeners[listener][i]);
}
}
console.log (myObj2.getListeners ());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment