Skip to content

Instantly share code, notes, and snippets.

@jarek-foksa
Created January 3, 2012 05:05
Show Gist options
  • Save jarek-foksa/1553576 to your computer and use it in GitHub Desktop.
Save jarek-foksa/1553576 to your computer and use it in GitHub Desktop.
global.events = {};
//
// Usage:
// bind('editButton->clicked', function(arg) {
// doStuff(arg);
// });
//
global.bind = function(eventName, callback) {
var callbacks = global.events[eventName] || (global.events[eventName] = []);
callbacks.push(callback);
}
//
// Usage:
// trigger('editButton->clicked', true);
//
global.trigger = function(eventName) {
if (debug) {
console.log("Triggered event: '" + eventName + "'");
}
var that = this; // scoping
var args = arguments; // scoping
var callbacks = global.events[eventName];
if (Array.isArray(callbacks)) {
callbacks.forEach( function(callback) {
callback.apply(global, Array.prototype.slice.call(args, 1));
});
}
}
global.unbind = function(eventName, callback) {
var callbacks = global.events[eventName];
if (Array.isArray(callbacks)) {
callbacks.forEach( function(item, index) {
if (callback.toString() === item.toString()) {
callbacks.splice(index, 1);
return;
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment