event(不同页面间的发布订阅)

与 weex 拓展的 globalEvent 所不同,event 主要做的是不同页面 js 之间的通讯,和 globalEvent 主要负责客户端和 js 的通讯。

举个例子,假如你有 2 个页面, A.js 和 B.js,以下简称 A B:

你在 A 中注册一个事件,并设置其回调

this.$event.on('AeventName', params => {})

这样你便可以在 B 中触发这个事件

this.$event.emit('AeventName')

当然你也可以在 A 中在注册事件之后来调用这个事件

需要注意的是,如果你在 B 中注册,从 B 返回 A,B的实例会被销毁,事件自然也会被销毁

而细心的你可能会注意到,我们在项目中有个 Service 文件夹,下面有个 bus.js ,他是干什么的呢?

bus.js 会在 app 启动的时候,作为第一个 js bundle 被执行,并且常驻内存,可以在bus上绑定事件,保存数据和状态,可以做类似 sessionStore 或者 Vuex的功能,当然这些数据,状态和事件都会随着app关闭而销毁,如果需要本地持久化存储,就搭配着 this.$storage 来使用即可。(因为常驻内存,请不要在这里面进行过量存储,时不时看下你的内存使用状态)

on

注册事件,可被响应多次。

示例:

this.$event.on('eventName',(params) => {
    // params 为触发该事件所传的参数
});

once

注册事件,只响应一次。

示例:

this.$event.once('eventName',(params) => {
    // params 为触发该事件所传的参数
});

emit

触发事件。

示例:

this.$event.emit('eventName',params)

off

解绑事件。

示例:

this.$event.off('eventName',(result) => {
    console.log("取消该事件");
});

offall

解绑全部事件。

示例:

this.$event.offall();

results matching ""

    No results matching ""