微信小程序之页面之间传值,主动接收!EventBus

查了些资料,看了下小程序页面的传值!
主要的是主动式和效率问题,以下是基于页面和事件维度的事件订阅和发布!

App({
  onLaunch() {
  },
  // 事件订阅 app.on('sharenum',this.route,this.func.bind(this))
  on(action,path, event) {
    if (eventMap) {
      if(eventMap.has(action)){
        var events = eventMap.get(action);
        events.set(path,event);
      }else{
        var events = new Map();
        events.set(path,event);
        eventMap.set(action, events)
      }
    }
    // app.on('event_name',this.route,this.functionname.bind(this));
    //functionname(msg){//这里处理接收到的msg信息};
  },
  // 事件卸载 app.off('sharenum' this.route);
  off(action,path) {
    if (eventMap) {
      if(eventMap.has(action)){
        var events = eventMap.get(action);
        events.delete(path);
      }
    }
  },
  // 事件触发 arg需要为字符串,在对应的地方自己拆装箱
  emit(action, arg) {
    if (eventMap && eventMap.has(action)) {
      var events = eventMap.get(action);
      var funcs = events.values();
      for(var func of funcs){
         func(arg);
      }
      // eventMap.get(action) && eventMap.get(action)(arg)
    }
    //app.emit('eventname',msg);
  },
  // https://blog.csdn.net/gaowenju1991/article/details/132321342
  globalData: {
    userInfo: null,
  }
})

App({
onLaunch() {
},
// 事件订阅 app.on(‘sharenum’,this.route,this.func.bind(this))
on(action,path, event) {
if (eventMap) {
if(eventMap.has(action)){
var events = eventMap.get(action);
events.set(path,event);
}else{
var events = new Map();
events.set(path,event);
eventMap.set(action, events)
}
}
// app.on(‘event_name’,this.route,this.functionname.bind(this));
//functionname(msg){//这里处理接收到的msg信息};
},
// 事件卸载 app.off(‘sharenum’ this.route);
off(action,path) {
if (eventMap) {
if(eventMap.has(action)){
var events = eventMap.get(action);
events.delete(path);
}
}
},
// 事件触发 arg需要为字符串,在对应的地方自己拆装箱
emit(action, arg) {
if (eventMap && eventMap.has(action)) {
var events = eventMap.get(action);
var funcs = events.values();
for(var func of funcs){
func(arg);
}
// eventMap.get(action) && eventMap.get(action)(arg)
}
//app.emit(‘eventname’,msg);
},
// https://blog.csdn.net/gaowenju1991/article/details/132321342
globalData: {
userInfo: null,
}
})
看上面的代码,主要是一个事件可能给多个页面使用,所以关键点在于关联的对象(function)应该是一个数组或者map啥的,而不是网络资料上的单个!
如果页面是被终结的,我估计上面也有问题,估计的try catch下!
后续使用中发现问题,再修改!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值