微信小程序navigateTo数据传递EventChannel的使用方法

三级目录 微信小程序navigateTo数据传递EventChannel的使用方法

EventChannel:页面间事件通信通道
详细官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.html

讲解用到的方法:
EventChannel.emit()触发一个事件
EventChannel.on()持续监听一个事件

父页面到子页面数据传递

这两个方法是页面跳转时,在通道(也就两个页面)的两端作用,emit执行时就会触发,而另一端如果有on就能监听到。可以形象的比喻为两个人打电话,如果一方在说话,另一方没有听,那么就无法传递到数据。

父页面

wx.navigateTo({
       url: "../child/child?Data="+ JSON.stringify(Data),
		events:{
		//注释代码块,这里可暂时不管,后续讲解需要
		//  myFunction:function(data) { console.log(data) }
       },
       success: function(res) {
        //跳转成功后 触发myFunction,向跳转页面传递数据
        res.eventChannel.emit('myFunction',{data:2})
      }
     })

接收页面:

onLoad: function (options) {
      //注释代码块
      //const eventChannel = this.getOpenerEventChannel()
     //eventChannel.emit('myFunction',{data:0});
	 // 监听myFunction事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('myFunction', function(data) {
      console.log(data)
    })
  }

忽视注释代码,如上述情形就完成了父页面到子页面(被跳转页面)的数据传递。

子页面传递数据到父页面

根据文档框架中页面通信介绍:
如果一个页面由另一个页面通过 wx.navigateTo 打开,这两个页面间将建立一条数据通道:

被打开的页面可以通过 this.getOpenerEventChannel() 方法来获得一个 EventChannel 对象;

wx.navigateTo 的 success 回调中也包含一个 EventChannel 对象。
这两个 EventChannel 对象间可以使用 emit 和 on 方法相互发送、监听事件。

因此,先简化以下代码,以便更清晰理解,将上述代出现的eventChannel.on和eventChannel.emit相关代码注释掉。只看我之前注释掉的代码块。

在子页面触发myFunction方法,并通过参数传递到父页面,由于父页面events里含有myFunction方法,所以父页面可在此出获取到子页面的数据。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值