发布订阅模式
在共同引用文件中加入这个
var PubSub = { subscribe: function(ev, callback) { //创建 _callbacks 对象,除非它已经存在了 var calls = this._callbacks || (this._callbacks = {}); //针对给定的事件 ev 创建一个数组,除非这个数组已经存在 //然后将回调函数追加到这个数组中 (this._callbacks[ev] || (this._callbacks[ev] = [])).push(callback); return this; }, publish: function() { //将 arguments 对象转换为真正的数组 var args = Array.prototype.slice.call(arguments, 0); //拿出第1个参数,即事件名称 var ev = args.shift(); //如果不存在 _callbacks 对象,则返回 //或者如果不包含给定事件对应的数组 var list, calls, i, l; if (!(calls = this._callbacks)) return this; if (!(list = this._callbacks[ev])) return this; //触发回调 for (i = 0, l = list.length; i < l; i++) { list[i].apply(this, args); } return this; } };
在tree main里绑事件
PubSub.subscribe("ye", function() { alert("hello!"); }); PubSub.subscribe("wem", function() { alert("wen!"); }); PubSub.publish("wem"); //wen PubSub.publish('ye'); //hello
在manager main里绑定时间
//使用方法 PubSub.subscribe("wem", function() { alert("wem!"); }); PubSub.publish("wem"); //wem PubSub.publish('ye');
因为require的原因,
不同的模块里订阅的事件不会蹿到另一个页面中,
即使重名,也是各自执行各自绑定的。
反正就是各自独立的意思啦

浙公网安备 33010602011771号