Skip to content

Latest commit

 

History

History
107 lines (75 loc) · 2.51 KB

README.md

File metadata and controls

107 lines (75 loc) · 2.51 KB

EBus-JS


> simplifies communication between pages for WeChatApp in JS
>基于微信小程序使用纯js编写的事件通知机制工具
>[https://github.com/tanweijiu/EBus-JS](https://github.com/tanweijiu/EBus-JS)

EBus-JS Installation

在需要接受事件的page页引入js文件

let EBUS = require('ebus.js');

在需要接受事件的page页的onLoad或者其他非销毁结束生命周期调用中注册事件

onLoad: function() {
/**
  *为需要注册的事件注册  
  * @param {String} eventName
  * @param {function} func
  * @param {any} observer
*/
   EBUS.register(this, "自定义事件名字", this.onRecivedEvent/*自定义接受事件*/);
}

在注册过的page页的onUnLoad或者其他销毁结束生命周期调用中取消注册事件

onUnload: function() {
/**
  *取消注册事件  
  * 删掉一个事件监听
  * 两个参数其中一个不能为空,
  * @param {String} eventName 若只有事件名字为空,则删除所有observer下的事件
  * @param {any} observer 若只有observer为空,则删除所有名为eventName的事件
  * @returns
*/
    EBUS.unRegister(this, null);
}

在想发送事件数据的地方,比如其他page页面,当然,你也可以在当前页面(应该没有人这么无聊的在当前页面使用这种方法吧)

常规发送

/**
  * 发送一个事件
  * 
  * @param {String} eventName
  * @param {any} data
*/
EBUS.post("自定义事件名字", {/*数据,按需构造数据,不限制*/});

发送一个延迟事件,可以配合getSticky等接口使用

/**
  * 发送一个sticky事件,会被先消费一次,然后保存下来,之后能通过getSticky获取
  * 
  * @param {String} eventName
  * @param {any} data
 */
EBUS.postSticky("自定义事件名字", {/*数据,按需构造数据,不限制*/});

获取sticky事件数据(同一事件名的数据仅保存最新的一份)

可以获取到相关名字的已发送事件的最新一份数据

EBUS.getSticky('自定义事件名字');

删除sticky事件数据(置为null)

EBUS.removeSticky('自定义事件名字');

demo效果


Todo List:

  • 发送延迟事件数据(postSticky)
  • 删除延迟事件数据(removeSticky)
  • 获取延迟事件数据(getSticky)
  • ...

喜欢的给个star呗