/**
* Created by zhangmike on 16/10/18.
*/
export default function initEventBus(GMP) {
var events = {},
registerEvent = function(eName, handler, scope){
events[eName] = events[eName]||[];
events[eName].push({
scope: scope || this,
handler: handler
});
},
removeEvent = function(eName, callback, scope){
var fns = events[eName],
scope = scope || this;
if (!fns) {
return;
}
events[eName] = events[eName].filter(function(fn){
if (callback && callback !== fn.callback ||
scope && scope !== fn.scope
) {
return true;
} else {
return false;
}
});
},
triggerEvent = function(eventName, params){
var fns = events[eventName],
i,
fn;
if (!fns) {
return;
}
for (var i = 0; fn = fns[i]; i++) {
fn.handler.apply(fns.scope, params || []);
}
};
GMP["GMPEvents"] = {
on: registerEvent,
off: removeEvent,
trigger: triggerEvent,
_events: events
};
};