Sha256: cd48cb955b59796acbf7da424b1ecdb8e2ff1811b5a307feb812af1687e31163
Contents?: true
Size: 1.67 KB
Versions: 1
Compression:
Stored size: 1.67 KB
Contents
/** * Expose `Emitter`. */ exports.Emitter = Emitter; /** * Initialize a new `Emitter`. * * @api public */ function Emitter() { this.callbacks = {}; }; /** * Listen on the given `event` with `fn`. * * @param {String} event * @param {Function} fn * @return {Emitter} * @api public */ Emitter.prototype.on = function(event, fn){ (this.callbacks[event] = this.callbacks[event] || []) .push(fn); return this; }; /** * Adds an `event` listener that will be invoked a single * time then automatically removed. * * @param {String} event * @param {Function} fn * @return {Emitter} * @api public */ Emitter.prototype.once = function(event, fn){ var self = this; function on() { self.off(event, on); fn.apply(this, arguments); } this.on(event, on); return this; }; /** * Remove the given callback for `event` or all * registered callbacks. * * @param {String} event * @param {Function} fn * @return {Emitter} * @api public */ Emitter.prototype.off = function(event, fn){ var callbacks = this.callbacks[event]; if (!callbacks) return this; // remove all handlers if (1 == arguments.length) { delete this.callbacks[event]; return this; } // remove specific handler var i = callbacks.indexOf(fn); callbacks.splice(i, 1); return this; }; /** * Emit `event` with the given args. * * @param {String} event * @param {Mixed} ... * @return {Emitter} */ Emitter.prototype.emit = function(event){ var args = [].slice.call(arguments, 1) , callbacks = this.callbacks[event]; if (callbacks) { for (var i = 0, len = callbacks.length; i < len; ++i) { callbacks[i].apply(this, args); } } return this; };
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
uikit-rails-0.0.2 | vendor/assets/javascripts/ui.emitter.js |