- 当前 Bug 的表现(可附上截图)
翻文档看到wx.navigateTo新增了一个events属性,说是可以用于用于监听被打开页面发送到当前页面的数据。
个人理解的是可以通过这个events来监听被打开页面调用当前页面的方法,如果是这样的话在被打开页面应该怎么去调用当前页面的方法呢
文档下面的示例看过了已经,但是只是当前页面的,被打开页面如何调用events里的方法并没有说明
相关文档链接https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
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中调用还是会被看到刷新过程影响使用体验