一个页面通过wx.navigateTo打开一个新页面,这两个页面间将建立一条数据通信。
1、在wx.navigateTo的success回调中通过EventChannel对象发射事件。
2、在被打开的页面可以通过this.getOpenEventChannel()方法来获得一个EventChannel对象,进行监听、发射事件。
3、wx.navigateTo方法中可以定义events配置项接受被打开页面发射的事件。
<button type="primary" plain bindtap='handler'>跳转传参</button>
//跳转页面
handler(){
wx.navigateTo({
url: '/pages/list/list',
events:{
// key:被打开页面通过eventChannel发射的事件
// value:回调函数
// 为事件添加一个监听器,获取到被打开页面传递给当前页面的数据
currentevent:(res) => {
console.log(res)
}
}
//被打开页面
onLoad(options) {
//接收url传递过来的参数
console.log(options)
// 通过this.getOpenerEventChannel()可以获取EventChannel对象
const EventChannel= this.getOpenerEventChannel()
// 通过EventChannel提供的on方法监听页面发射的自定义事件
EventChannel.on('myevent',(res) => {
console.log(res)
})
// 通过EventChannel提供的emit方法可以向上一级页面传递数据,需要使用emit定义自定义事件,携带需要传递的数据
EventChannel.emit('currentevent',{age:'10'})
}