События и слушатели шаблонов модуля Javascript

Я реализую шаблон модуля и хотел бы узнать лучший / предпочтительный способ определения и регистрации прослушивателей / обработчиков событий. Следующее работает, но, возможно, есть лучший / более простой способ ...

var  MODULE = function() {

    //  private
    var _field1;
    var _field2;

    function  localFunc(p) {
        alert('localFunc');
    }

    //  public
    return {
        // properties
        prop1: _field1,

        // events
        myEvent1Handler: {},
        myEvent1: function() {myEvent1Handler();},
        myEvent2Handler: {},
        myEvent2: function() {myEvent2Handler();},

        addListener: function  (event,func) {
            if (event  ==  "myEvent1")
                myEvent1Handler = func;   

            if (event  ==  "myEvent2")
                myEvent2Handler = func;      
        },

        // public  methods
        method1: function (p) {
            alert('method1 says:' + p);
            MODULE.myEvent1();
        },
        method2: function  (p) {
             alert('method2 doing  stuff');
             localFunc(p);
            MODULE.myEvent2();
        }

    };
}();

// register for events
MODULE.addListener("myEvent1",function(){alert('fired1');});  
MODULE.addListener("myEvent2",function(){alert('fired2');});  

// use module (only event1 should fire!)
MODULE.method1("hello");  

Попробуйте:

http://jsfiddle.net/RqusH/3/

Похоже, что для myEventx потребуется много работы , myEventHandlerx и addListener?

14
задан Rob W 11 November 2011 в 20:57
поделиться