所有分类
  • 所有分类
  • 后端开发
events属性:让你在页面间自由穿梭,代码写法像Vue组件传输

events属性:让你在页面间自由穿梭,代码写法像Vue组件传输

微信小程序在2.7.3版本wx.navigateTo这个方法中新增了events这个属性

是不是被那个新的名为 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参数怎么用和啥时候能用的讲解,希望能帮到大家~觉得好的话就点赞+分享!有问题或者想知道更多内容?评论区见会尽量回复哒!

原文链接:https://www.icz.com/technicalinformation/web/2024/03/11637.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?