这是一个基于观察者模式实现的可以订阅、取消订阅和发布事件的系统。
订阅一个事件
function onLogin(event) {
var user = event.data;
// do something
}
Eventer.on('login', onLogin);
发布一个事件
Eventer.fire('login', {
username: 'joenil'
});
取消订阅一个事件
Eventer.off('login', onLogin);
订阅一次性有效的事件
Eventer.one('login', function() {
// do something
});
取消订阅所有事件
Eventer.offAll();
发布所有事件
Eventer.fireAll({
data: []
});
传入一个事件列表对象
Eventer.on({
ready: function() {
// do something
},
login: function() {
// do something
}
});
订阅多个事件使用同一个事件处理程序
Eventer.on('ready login', function(event) {
console.log(event.type);
});
可以将上述两种方式结合
Eventer.on({
'ready login': function() {
// do something
},
'mouseover mouseenter': function() {
// do something
}
});
取消订阅和发布事件也可以这么用
// subscribe a group listenrs
Eventer.off('ready login', foo);
Eventer.off({
ready: foo,
login: bar
});
// fire a group listeners
Eventer.fire('ready login', {
username: 'joenil'
});
Eventer.fire({
login: {
username: 'joenil'
},
ready: {
data: []
}
});
使用Eventer静态方法操作的事件数据都是共享的,有时候需要将事件独立出来,可以使用生成实例的方式
var myEventer = new Eventer();
myEventer.on('login', function() {
// do something
});
var otherEventer = new Eventer({
login: function() {
// do something
}
});
// only fire their own listener
myEventer.fire('login');
otherEventer.fire('login');