事件参考

ndoojs采用一种定制的事件机制来完成组件之间模块之间的衔接。

1. 事件api

// 注册事件绑定
ndoo.on(
  (string) eventName, // 事件名称
  (fn) callback       // 回调函数
)
// 触发事件
ndoo.trigger(
  (string)eventName  // 事件名称
  [, data...]        // 传递参数
)
// 移除事件
ndoo.off(
  (string)eventName  // 事件名称
)

可以一次绑定多个事件,多个事件之间用"空格"分隔。如 _n.on('event1 event2', callback);。

2. 事件类型

ndoojs的事件分为三种,分别为 default, delay, status,对应三种情况。声明时不区分事件类型,触发时通过事件前缀 DEFAULT、DELAY、STATUS触发不同事件。default事件为默认事件,可以省略前缀。

2.1 default 事件

default事件是普通事件,通过on绑定,trigger触发。示例:

ndoo.on('customEvent', function(foo, bar) {
  alert(foo + bar);
});

ndoo.trigger('customEvent');

2.2 delay 事件

delay为延迟事件,即先用trigger触发的事件,可以引发后面用on绑定的回调。示例:

ndoo.trigger('DELAY:customDelayEvent');

ndoo.on('customDelayEvent', function(foo, bar) {
  alert(foo + bar);
});

2.3 status 事件

status 为状态事件,当一个状态事件触发后,在事件触发前绑定的回调会执行,之后绑定的回调也会执行。示例:

ndoo.on('customStatusEvent', function(foo, bar) {
  alert(foo + bar);
});

ndoo.trigger('STATUS:customStatusEvent');

ndoo.on('customStatusEvent', function(foo, bar) {
  alert(foo + bar);
});

3. 系统事件

ndoojs自身实现了一件事件,具体如下:

STATUS:PAGE_STATUS_FAST      // 最行被执行的事件
STATUS:PAGE_STATUS_DOMPREP   // DOMLOADED事件之前触发
STATUS:PAGE_STATUS_DOM       // DOMLOADED事件时触发
STATUS:PAGE_STATUS_DOMORLOAD // DOMLOADED事件之后触发
STATUS:PAGE_STATUS_LOAD      // ONLOAD事件后触发

STATUS:PAGE_STATUS_ROUTING   // 页面路由事件

STATUS:NAPP_DEFINE           // 模块定义事件
NAPP_LOADED                  // 模块加载完成
STATUS:NBLOCK_INIT           // 块组件定义事件
NBLOCK_LOADED                // 块组件加载完成

NAPP_ACTION_BEFORE           // 全局 action 前置事件
NAPP_ACTION_AFTER            // 全局 action 后置事件
NAPP_[PREFIX]_ACTION_BEFORE  // 针对特定模块的 action 前置事件
NAPP_[PREFIX]_ACTION_AFTER   // 针对特定模块的 action 后置事件