JSFiddle - React, Tailwind, and code Playground
by gkucmierz
JavaScript
'use strict';
angular.module('app').service('EventListenerService', function() {
return function(eventNames) {
var events = {};
for (var i = 0; i < eventNames.length; ++i) {
events[eventNames[i]] = [];
}
return {
add: function(eventName, fn) {
var i = events[eventName].push(fn) - 1;
return {
detach: function() {
delete events[eventName][i];
}
};
},
remove: function(eventName, fn) {
delete events[eventName][
events[eventName].indexOf(fn)
];
},
emit: function(eventName) {
var arg = [].slice.call(arguments, 1);
var res = [];
for (var i in events[eventName]) {
if (events[eventName].hasOwnProperty(i)) {
res.push(events[eventName][i].apply(this, arg));
}
}
return res;
}
};
};
});