1.1.6 • Published 10 years ago

events-es5 v1.1.6

Weekly downloads
1
License
MIT
Repository
github
Last release
10 years ago

events-es5

NPM version Build Status Clean Code Dependency Status devDependency Status License

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 html script 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          
1.1.6

10 years ago

1.1.3

10 years ago

1.1.2

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.12

10 years ago

1.0.11

10 years ago

1.0.10

10 years ago

1.0.8

10 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.3

10 years ago

1.0.1

10 years ago