uniapp页面传参的三种方式实例总结
子页面返回父页面传参,使用uni.$emit和uni.$on页面通讯
一,uni.$emit(eventName,OBJECT)
触发全局的自定义事件,附加参数都会传给监听回调。
eventName为事件名,object为触发事件附加参数。
代码如下:
uni.$emit('gotoNext',{msg:'刷新页面'})
二, uni.$on(eventName,Callback)
监听全局自定义事件,事件由uni.$emit()触发,回调函数会接收所有传入的数。
eventName为事件名,Callback为回调函数。
代码如下:
uni.$on('goto',function(data){console.log('监听到事件来自goto,所带参数msg 为:' +data.msg)})
作用:
开发中对触发页面动态更新将非常又效果。
比如说移动项目通过自己编写的组件(tabbar)进行tabar跳转,这个时候要是某应该页面微信支付成功了,需要返回tabbar页面,你会发现,它不会像其他普通的uni页面,(onshow生命周期)会动态刷新,影响用户体验。所以这个方法很有效,只需要在组件中写入uni.emit(update.masq:'页面刷新')
然后在页面使用uni.on('update',function(data){ console.log('监听到事件来自 update ,携带参数 msg 为:' + data.msg); })
接收,将函数写入即可。实际应用例子如下:
onShow() { switch (this.Tab){ case 'demo': uni.$emit('goto',{msg:'页面更新'}); break; } },
text页面
created() { uni.$on('goto', (res) => { this.list() console.log(res, '更新'); }) },
三,uni.$off([eventName, callback])移除全局自定义事件监听器。
针对于页面传参请直接使用Vue的全局变量更方便 ,因为uni-app框架的uni.$emit()和$on() 虽然使用了定时器能接收到参数,但是不知道为什么第一次总是接收不到导致很多为!但是使用Vue的全局变量能搞定一切!
最后一个小举例:
//从A跳转B页面,B页面返回A页面时传参 //B页面 uni.$emit("targetEvent",{shiftOverId:that.shiftOverId,productOrderId:that.productOrderId }) uni.navigateBack(); //A页面 onLoad: function (e) { uni.$on("targetEvent",(e)=>{ this.preId = JSON.parse(e.shiftOverId) this.productOrderId = JSON.parse(e.productOrderId) uni.$off('targetEvent') }) },
总结
到此这篇关于uniapp页面传参的三种方式的文章就介绍到这了,更多相关uniapp页面传参内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解如何使用JavaScript中Promise类实现并发任务控制
在JavaScript中,Promise是一种用于管理异步操作的强大工具,但是,有时候需要更高级的控制,以限制同时执行的任务数量,以避免系统资源超负荷,本文将深入探讨JavaScript中的并发任务控制,并介绍如何创建一个自定义的Promise类——ConcurrentPromise2023-08-08React Native JSI实现RN与原生通信的示例代码
本文主要介绍了React Native JSI实现RN与原生通信的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-08-08Javascript实现快速排序(Quicksort)的算法详解
排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一,要想成为合格的程序员,就必须理解和掌握各种排序算法。2015-09-09Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
这篇文章主要介绍了Extjs4中tree的拖拽功能简单实例,有需要的朋友可以参考一下2013-12-12
最新评论