events-es5
v1.1.6
Published
Custom events dispatcher (listener) for browsers and node.js.
Downloads
11
Maintainers
Readme
events-es5
Browser support
Chrome, Safari, Firefox, Opera, IE9+
( If you want to use this module in IE8-, you need to modify events.js
to replace the use
of Array.prototype.slice(), .etc )
Installation
npm install events-es5
or
jspm install npm:events-es5
Usage
You can use it both in node.js environment and in a browser.
- Use it as a Node module.
// a.js
var Events = require('events-es5');
var WorkerManager = function () {
this.events = new Events('message', 'error'); // Initialize events.
};
WorkerManager.prototype = {
constructor: WorkerManager,
work: function () {
this.events.send('message', this, 'Working...'); // Dispatch messages to subscribers.
}
};
// b.js
var Company = function () {
this._init();
};
Company.prototype = {
constructor: Company,
_init: function () {
...
this._workerMgr = new WorkerManager();
this._workerMgr.events.bind('message', this._receivedMsg.bind(this)) // Subscribe.
.bind('error', this._receivedErr.bind(this)); // Chainable.
},
_receivedMsg: function (workerMgr, msg) {
alert(msg);
},
...
};
- Use it directly in a browser. You can simply put
events.js
in your project and include it by htmlscript
tag.
// a.js
var WorkerManager = function () {
this.events = new nameSpace.Events('message', 'error'); // Initialize events.
};
// Before you use it in browsers, you probably will want to replace 'nameSpace' with a real
// namespace. Simply update events.js.
...
...
- Other methods in this module. ( The code of
events.js
is clean and well organized, I recommend you read it directly.)
/**
* Defines a list of events.
* @param eventNames {String...}
* @returns {Events}
*/
declare(eventNames) // e.g. declare('message', 'error');
/**
* Returns whether <eventName> has been defined.
* @param eventName {String}
* @returns {Boolean}
*/
isSupported(eventName) // e.g. isSupported('message');
unbind(eventName, fn)
numListeners(eventName)
hasListeners(eventName)
/**
* Binds a listener to '_activate' event, this listener
* will be noticed when any public event starts to have listeners.
*
* @param fn {Function}
* @returns {Events} A pointer to this instance, allowing call chaining.
*/
monitorActivation(fn)
/**
* Binds a listener to '_deactivate' event, this listener
* will be noticed when any public event have no listeners.
*
* @param fn {Function}
* @returns {Events} A pointer to this instance, allowing call chaining.
*/
monitorDeactivation(fn)
Tests
npm test