syh-observer
v1.0.1
Published
组件间消息传递组件
Downloads
4
Readme
Observer 公共事件观察器
安装
npm install syh-observer --save
说明
用于订阅和触发公共事件, 使用全局字符串名称表示事件ID,使事件订阅者与发布者无直接依赖,达到模块间弱耦合的目的。
依赖模块
无
示例
该模块支持 ES6/CMD/AMD规范,也可以在html文件中通过script标签引入进行使用;下面以cmd规范为例
公共事件触发与定阅
// Map.js;
var observer = require('observer');
// 触发了一个名称为'map:init'的事件;并传递 {time: new Date()}作为监听事件处理函数的参数;
observer.trigger('map:init', {time: new Date()});
// A模块
var observer = require('observer');
// 使用 observer.on方法进行消息订阅
observer.on('map:init', function(time){
alert('地图已初始化')
});
///..............
//撤消指定事件的订阅
observer.off('map:init')
// B模块
var observer = require('observer');
//past 即使B模块在'map:init'公共事件触发之后加载,下面的事件处理函数也能被调用
//调用时time事件参数为最后一次触发时的参数
observer.past('map:init', function(time){
alert('地图已初始化')
});
// C模块
var observer = require('observer');
// 使用observer.once,只监听一次消息,之后的消息不再监听
observer.once('map:init', function(time){
alert('地图已初始化')
});
define(function(require, exports, modules) {
var observer = require('observer');
//清空observer中每个事件的最后状态
observer.clearAll();
});
define(function(require, exports, modules) {
var observer = require('observer');
//清空observer中指定事件的最后状态
observer.clearOther(['event-a','event-b']);
});
调试功能
- 设置 seajs.debug 为 true
- 在JS调试器控制台中运行
printObserver()
可显示当前已注册的事件,及其所在代码行 - 在JS调试器控制台中运行
window.ObserverDebugOut = '*'
, 可显示此后所有事件触发的调试信息 - 使用
window.ObserverDebugOut = 'event-a'
或window.ObserverDebugOut = ['event-a','event-b','event-a']
可显示此后指定事件触发的调试信息