自定义一个
eventBus.js
文件放到until或者其他文件夹下,需要自己封装这个eventBus
//创建EventBus对象
let EventBus = function () {
console.log("eventbus init...");
};
//准备数组容器
var objBus = [], arrbus = [];
//添加方法
EventBus.prototype = {
obj: {
set: function (key, action) {
if (key && action) {
var map = {};
map.k = key;
map.v = action;
//如果存在,则删除之前添加的事件
for (var i = 0, busLength = objBus.length; i < busLength; i++) {
var tempMap = objBus[i];
if (tempMap.k == key) {
objBus.splice(i, 1);
}
}
objBus.push(map);
}
},
get: function (key) {
if (key) {
for (var i = 0, busLength = objBus.length; i < busLength; i++) {
var map = objBus[i];
if (map.k == key) {
return map.v();
}
}
}
}
},
emit: function (key, data) {
if (key) {
for (var i = 0, busLength = arrbus.length; i < busLength; i++) {
var map = arrbus[i];
if (map.k == key) {
return map.v(data);
}
}
}
return new Promise((resolve, reject) => { resolve() })
},
on: function (key, action) {
if (key && action) {
var map = {};
map.k = key;
map.v = action;
arrbus.push(map);
}
},
arr: {
push: function (key, action) {
if (key && action) {
var map = {};
map.k = key;
map.v = action;
arrbus.push(map);
}
},
pop: function (key) {
if (key) {
for (var i = 0, busLength = arrbus.length; i < busLength; i++) {
var map = arrbus[i];
if (map.k == key) {
map.v();
}
}
}
}
}
}
var eventBus = new EventBus()
module.exports = {
eventBus: eventBus
}
在
app.js
中引入,并在onLaunch
初始化中,挂载成全局属性
const eventBus=require('./js/utils/eventBus.js')
onLaunch(){
this.globalData.bus=eventBus.eventBus
}
在你需要用的页面都要引入。
var app=getApp();
var bus=app.globalData.bus;
需要发送的页面,使用emit
eventHandle(){
bus.emit('xxx');//第一个参数是通讯用的,第二个参数是传参(有就传没有就不传)
}
接收的页面,使用on
Page({
onShow(){
bus.on('xxx',(params)=>{
console.log(params,'这是传过来的参数')
})
}
})