wx.navigateTo新增events属性应该怎么用
发布于 7 年前 作者 lei76 13971 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

翻文档看到wx.navigateTo新增了一个events属性,说是可以用于用于监听被打开页面发送到当前页面的数据。

个人理解的是可以通过这个events来监听被打开页面调用当前页面的方法,如果是这样的话在被打开页面应该怎么去调用当前页面的方法呢

文档下面的示例看过了已经,但是只是当前页面的,被打开页面如何调用events里的方法并没有说明

相关文档链接https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html

  • 预期表现
  • 复现路径
  • 提供一个最简复现 Demo
3 回复
    eventChannel.emit('someEvent', {data: 'test'});


这个就是在下一级页面调用  someEvent是名称 当然你可以自定义任何名称  你定义了名称之后在上一级页面的events里面需要有一个

someEvent: function(data) {
      console.log(data)
    }

这样对应的监听 data就是你传过来的数据了  当然数据也可以不传

试用场景举例:订单列表页-点击进入订单详情页-操作订单状态-使用此方法回调,订单页面刷新列表

官方给的文档传递的数据都是这个{data:‘test’},可能让大家蒙了,其实这个和vue的组件之间传递数据有点相似,emit就是相当于用于发送事件,on就是相当于接收同名的emit传递的方法,也就是说当前所在的页面(也就是执行wx.navigateTo方法的页面 )的emit的方法在被打开也就是要去的页面里on去接收传递的数据,如果被打开的页面里有执行的方法同时又要调用当前页面的方法,就在被打开页面里也有执行emit的地方,在当前页面里events参数里的方法就是接收被打开页面emit的同名的方法就能接收到被打开页面执行某一方法同时执行emit传递到当前页面的数据,也就是相当于被打开页面已经打开之后,执行某一方法可以同时调用之前执行wx.navigateTo方法的页面里面的方法,个人理解使用场景就是能在一个页面执行了另一个页面的方法,例如执行一些刷新操作之类的,防止在onshow中调用还是会被看到刷新过程影响使用体验

回到顶部