日期:2014-05-16  浏览次数:20352 次

一个简单的javascript模块间事件通信范例
现在项目开发中很多采用了模块化方式开发,很多时候多个模块中间需要通过事件方式进行交互,这里给出一个简单的示例代码,希望对大家有所帮助。
window.Core = window.Core || {};
Core.listenData = {};
//事件监听
Core.listen = function (args, handle) {
    //args:监听事件的名称,可为数组形式,handle:监听到事件后的处理函数
    //同一个页面上可能存在多个同样的部件,他们所监听的可能是同一个事件
    if (typeof (args) == 'string') {
        args = [args];
    }
    for (var i = 0; i < args.length; i++) {
        if (Core.listenData.hasOwnProperty([args[i]])) {
            Core.listenData[args[i]].push(handle);
        } else {
            Core.listenData[args[i]] = [];
            Core.listenData[args[i]].push(handle);
        }
    }
};

//事件通知
Core.notify = function (handleName, data) {
    if (Core.listenData.hasOwnProperty([handleName])) {
        var handleList = Core.listenData[handleName];
        for (var i = 0; i < handleList.length; i++) {
            handleList[i](handleName, data);
        }
    }
};