微信小程序wx.navigateTo方法里的events参数使用详情及场景


Posted in Javascript onJanuary 07, 2020

个人理解wx.navigateTo方法里的events参数使用详情及场景

微信小程序在2.7.3版本wx.navigateTo这个方法中新增了events这个属性
微信官方文档里面写的很模糊,在微信公众平台的社区里也有一些人在问,我第一次看到也是先百度了一下使用场景,搜到的也只是copy官方文档的抄袭党,并没什么卵用,相信大家都是看的一头雾水,所以用业余时间研究了一下,以下仅代表个人的理解,如果有更好的想法或者使用不当的地方希望大家提出防止我的个人想法误导大家

个人理解这个新增的属性使用的场景就是能在一个页面执行另一个页面的方法,以大家最熟悉的购物为例,假设现在大家在购物的订单列表页,然后想从这个页跳转到评论订单的页面,在评论完成后刷新订单页面的订单,原来的处理方式就是评论完回到订单页在onShow方法中执行刷新订单的操作,用户体验会差一点,有了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' });
 }
})

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
window.onload 加载完毕的问题及解决方案(上)
Jul 09 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
Dec 06 Javascript
通过jQuery源码学习javascript(二)
Dec 27 Javascript
Jquery:ajax实现翻页无刷新功能代码
Aug 05 Javascript
js对文章内容进行分页示例代码
Mar 05 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
CSS3实现动态背景登录框的代码
Jul 28 Javascript
JavaScript学习笔记之惰性函数示例详解
Aug 27 Javascript
10个经典的网页鼠标特效代码
Jan 09 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
详解如何使用node.js的开发框架express创建一个web应用
Dec 20 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 Javascript
详解微信小程序之提高应用速度小技巧
Jan 07 #Javascript
小程序跨页面交互的作用与方法详解
Jan 07 #Javascript
JavaScript实现联动菜单特效
Jan 07 #Javascript
JS实现电商商品展示放大镜特效
Jan 07 #Javascript
JS实现字体背景跑马灯
Jan 06 #Javascript
JS实现音乐钢琴特效
Jan 06 #Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
Jan 06 #Javascript
You might like
用PHP提取中英文词语以及数字的首字母的方法介绍
2013/04/23 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
php实现分页显示
2015/11/03 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
javascript 主动派发事件总结
2011/08/09 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
2011/03/13 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Python: 传递列表副本方式
2019/12/19 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
Python项目跨域问题解决方案
2020/06/22 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
本科应届生自荐信
2014/06/29 职场文书
安全目标责任书
2014/07/22 职场文书
老公给老婆的检讨书(精华篇)
2014/10/18 职场文书
2015年少先队活动总结
2015/03/25 职场文书
军事博物馆观后感
2015/06/05 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
教你利用python实现企业微信发送消息
2021/05/23 Python
Python标准库之typing的用法(类型标注)
2021/06/02 Python