是不是被那个新的名为 events 的 Wx.navigateTo 属性搞迷糊了呀?别慌,我给你说说呗!
你可能会想,我怎么可能在购买页面直接跑到评论区回复?是不是要重新回到目录再来刷商品显示?那你就错!借助这个新增加的event属性,这些都不再是你的困扰。它让我们能在不同页面中的行为之间自由穿梭,无缝切换~
其实,这个传递方式有些神奇,代码写成了{data: ‘test’},跟Vue组件间的数据传输很像?就拿emit和on来类比,emit你可以当它是发消息,on在这边接收同样的消息。比如你想要用wx.navigateTo在当前页面跳转到新页面的时候,发出这个消息;然后在新的页面上,你就可以用on接收刚才那个消息传递过来的数据。要是新的页面还想同时调用原来页面的某个功能,那就在新页面里面再发一次emit喽!然后我们看下 events 这个参数,这里面存放的都是接收新页面传来的同名方法,这么一搞,就能在一个页面控制另一个页面的方法。换句话说,就是在一个页面操作另一个页面的事情。
那这属性究竟干嘛使呢?除了刷新的事儿能搞定,还有啥用途啊?别急,听小编给你细细讲来。
除了刷新的功能外,这种属性还能用在其他地方,比如想从一个界面跳到另一个界面,还想把一些信息传过去?没问题,只要用上我们这招就能实现!一句话就是说,这种属性真的超级实用!
那你也许好奇了,为啥要用events属性?其实有没别的办法?别急,听我慢慢说!
//订单页js,order.js //跳转去评论页的方法 fnToComment(){ wx.navigateTo({ url: `../comment/comment`, events:{ //执行刷新订单的操作data是从评论页传递的参数 fnFefresh:function(data){ console.log(data)//此处接收的是comment.js传递的{data:'2222'} } }, success: function (res) { //跳转comment页要执行的方法 res.eventChannel.emit('fresh', { data: '1111' }) } }) }, //评论页js,comment.js var eventChannel Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { eventChannel = this.getOpenerEventChannel() // 监听fresh事件,获取上一页面通过eventChannel传送到当前页面的数据 eventChannel.on('fresh', function (data) { console.log(data)//此处接收的是order.js传递的{data:'1111'} }) }, //提交评论的方法同时刷新order.js的刷新订单方法 fnComment(){ //刷新order.js的events属性中的fnFefresh方法 eventChannel.emit('fnFefresh', { data: '2222' }); } })
没了events属性的话,咱就得找全局变量或存个缓存来传数据啥的。可这不仅麻烦,还不美观!而这个events属性就是方便,让咱们能随心所欲地传递数据和方法,既简单又给力!
因此,假如碰巧遇到要在一个界面完成其他界面任务这样的要求的话,可以考虑尝试下wx.navigateTo这个方法的events属性。这招能让你的编程变得更轻松、更美观,提高用户好感度。当然咯,要是你有什么好主意,或者发现用得不对劲儿的地方,欢迎随时指出咱们相互学习进步!
这就是我对wx.navigateTo方法里的events参数怎么用和啥时候能用的讲解,希望能帮到大家~觉得好的话就点赞+分享!有问题或者想知道更多内容?评论区见会尽量回复哒!
评论0