赞
踩
借助wx.navigateTo方法,在两个页面之间构建起数据通道,互相可以通过“派发事件”及“注册事件监听器”来实现基于事件的页面通信。基础库版本v2.7.3以上支持。
EventChannel.emit( strign eventName,any args ) 触发一个事件
EventChannel.on( strign eventName,EventCallback fn ) 持续监听一个事件
EventChannel.once( strign eventName,EventCallback fn ) 监听一个事件一次,触发后失效
EventChannel.off( strign eventName,EventCallback fn) 取消监听一个事件。给出第二个参数时,只取消给出的监听函数,否则取消所有监听函数。
<!--pages/event-channel/index.wxml-->
<button bind:tap="to01Page">跳转至01页面</button>
to01Page() { wx.navigateTo({ url: `/pages/event-channel-01/index`, // events: 注册将在目标页面触发(派发)的同名事件的监听器 events:{ updateInvoice:(result)=>{ console.log('返回传输的数据', result); } }, // success:跳转后进行可通过res.eventChannel 触发自定义事件 success:(res)=>{ res.eventChannel.emit('sendQueryParams',{name: '梅若涵', age: 18, hobby: 'programming'}) } }); },
<!--pages/event-channel-01/index.wxml-->
<button bind:tap="back">返回</button>
onLoad(options) {
// 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
let eventChannel = this.getOpenerEventChannel();
eventChannel.once('sendQueryParams',(params)=>{
console.log('上一页面传来的数据', params);
})
},
back(){
this.getOpenerEventChannel().emit('updateInvoice', {sex: 'female'});
wx.navigateBack();
},
运行结果
需要注意,使用小程序中左上角的返回是无法接收到返回的数据的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。