Skip to content

Instantly share code, notes, and snippets.

@bergos
Created January 29, 2015 17:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bergos/a68268bcb8743dda82fe to your computer and use it in GitHub Desktop.
Save bergos/a68268bcb8743dda82fe to your computer and use it in GitHub Desktop.
Event Binding
utils.Event.Binding = function (master, event) {
var self = this;
var wrapper = function (func) {
var args = Array.prototype.slice(arguments, 1);
func.apply(self, self.args(args));
};
this.on = function (func) {
return master.on(event, wrapper.bind(self, func));
};
this.args = function () { return arguments; };
};
utils.Event.bind = function (master, event, args) {
var eventBinding = new utils.Event.Binding(master, event);
if (args != null) {
eventBinding.args = args;
}
return eventBinding;
};
utils.Event.Merger = function (events) {
var self = this;
var wrapper = function (func) {
var args = Array.prototype.slice(arguments, 1);
func.apply(self, self.args(args));
};
this.on = function (func) {
events.forEach(function (event) {
event.on(wrapper.bind(self, func));
});
};
this.args = function () { return arguments; };
};
utils.Event.merge = function (events, args) {
var mergedEvent = new utils.Event.Merger(events);
if (args != null) {
mergedEvent.args = args;
}
return mergedEvent;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment