1.1.6 • Published 8 years ago

events-es5 v1.1.6

Weekly downloads
1
License
MIT
Repository
github
Last release
8 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

8 years ago

1.1.3

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.12

8 years ago

1.0.11

8 years ago

1.0.10

8 years ago

1.0.8

8 years ago

1.0.7

8 years ago

1.0.6

8 years ago

1.0.3

8 years ago

1.0.1

8 years ago