收藏
回答

wx.navigateTo新增events属性应该怎么用

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug 路由 工具 7.0.4 2.7.3

- 当前 Bug 的表现(可附上截图)

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

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

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

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


- 预期表现


- 复现路径


- 提供一个最简复现 Demo


最后一次编辑于  2019-07-05
回答关注问题邀请回答
收藏

3 个回答

  • 小肥羊🍊
    小肥羊🍊
    2019-10-18

    这里解释的很清楚

    https://segmentfault.com/a/1190000020732602

    2019-10-18
    有用 1
    回复
  • 家里的土豆子不多了
    家里的土豆子不多了
    2019-08-16

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

    2019-08-16
    有用 1
    回复
  • 亮子🌞
    亮子🌞
    2019-07-05
        eventChannel.emit('someEvent', {data: 'test'});


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

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

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


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

    2019-07-05
    有用 1
    回复 1
    • Lv.42
      Lv.42
      2019-07-05

      刚去看了文档,发现已经有了相关示例,不知道是我第一次没发现还是啥

      Page({
        onLoad: function(option){
          console.log(option.query)
          const eventChannel = this.getOpenerEventChannel()
          eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
          eventChannel.emit('someEvent', {data: 'test'});
          // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
          eventChannel.on('acceptDataFromOpenerPage', function(data) {
            console.log(data)
          })
        }})
      2019-07-05
      回复
登录 后发表内容