查了些资料,看了下小程序页面的传值!
主要的是主动式和效率问题,以下是基于页面和事件维度的事件订阅和发布!
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下!
后续使用中发现问题,再修改!