uniapp頁(yè)面?zhèn)鲄⒌娜N方式實(shí)例總結(jié)
子頁(yè)面返回父頁(yè)面?zhèn)鲄?,使用uni.$emit和uni.$on頁(yè)面通訊
一,uni.$emit(eventName,OBJECT)
觸發(fā)全局的自定義事件,附加參數(shù)都會(huì)傳給監(jiān)聽(tīng)回調(diào)。
eventName為事件名,object為觸發(fā)事件附加參數(shù)。
代碼如下:
uni.$emit('gotoNext',{msg:'刷新頁(yè)面'})
二, uni.$on(eventName,Callback)
監(jiān)聽(tīng)全局自定義事件,事件由uni.$emit()觸發(fā),回調(diào)函數(shù)會(huì)接收所有傳入的數(shù)。
eventName為事件名,Callback為回調(diào)函數(shù)。
代碼如下:
uni.$on('goto',function(data){console.log('監(jiān)聽(tīng)到事件來(lái)自goto,所帶參數(shù)msg 為:' +data.msg)})
作用:
開(kāi)發(fā)中對(duì)觸發(fā)頁(yè)面動(dòng)態(tài)更新將非常又效果。
比如說(shuō)移動(dòng)項(xiàng)目通過(guò)自己編寫(xiě)的組件(tabbar)進(jìn)行tabar跳轉(zhuǎn),這個(gè)時(shí)候要是某應(yīng)該頁(yè)面微信支付成功了,需要返回tabbar頁(yè)面,你會(huì)發(fā)現(xiàn),它不會(huì)像其他普通的uni頁(yè)面,(onshow生命周期)會(huì)動(dòng)態(tài)刷新,影響用戶體驗(yàn)。所以這個(gè)方法很有效,只需要在組件中寫(xiě)入uni.emit(update.masq:'頁(yè)面刷新')
然后在頁(yè)面使用uni.on('update',function(data){ console.log('監(jiān)聽(tīng)到事件來(lái)自 update ,攜帶參數(shù) msg 為:' + data.msg); })
接收,將函數(shù)寫(xiě)入即可。實(shí)際應(yīng)用例子如下:
onShow() { switch (this.Tab){ case 'demo': uni.$emit('goto',{msg:'頁(yè)面更新'}); break; } },
text頁(yè)面
created() { uni.$on('goto', (res) => { this.list() console.log(res, '更新'); }) },
三,uni.$off([eventName, callback])移除全局自定義事件監(jiān)聽(tīng)器。
針對(duì)于頁(yè)面?zhèn)鲄⒄?qǐng)直接使用Vue的全局變量更方便 ,因?yàn)閡ni-app框架的uni.$emit()和$on() 雖然使用了定時(shí)器能接收到參數(shù),但是不知道為什么第一次總是接收不到導(dǎo)致很多為!但是使用Vue的全局變量能搞定一切!
最后一個(gè)小舉例:
//從A跳轉(zhuǎn)B頁(yè)面,B頁(yè)面返回A頁(yè)面時(shí)傳參 //B頁(yè)面 uni.$emit("targetEvent",{shiftOverId:that.shiftOverId,productOrderId:that.productOrderId }) uni.navigateBack(); //A頁(yè)面 onLoad: function (e) { uni.$on("targetEvent",(e)=>{ this.preId = JSON.parse(e.shiftOverId) this.productOrderId = JSON.parse(e.productOrderId) uni.$off('targetEvent') }) },
總結(jié)
到此這篇關(guān)于uniapp頁(yè)面?zhèn)鲄⒌娜N方式的文章就介紹到這了,更多相關(guān)uniapp頁(yè)面?zhèn)鲄?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何使用JavaScript中Promise類(lèi)實(shí)現(xiàn)并發(fā)任務(wù)控制
在JavaScript中,Promise是一種用于管理異步操作的強(qiáng)大工具,但是,有時(shí)候需要更高級(jí)的控制,以限制同時(shí)執(zhí)行的任務(wù)數(shù)量,以避免系統(tǒng)資源超負(fù)荷,本文將深入探討JavaScript中的并發(fā)任務(wù)控制,并介紹如何創(chuàng)建一個(gè)自定義的Promise類(lèi)——ConcurrentPromise2023-08-08React Native JSI實(shí)現(xiàn)RN與原生通信的示例代碼
本文主要介紹了React Native JSI實(shí)現(xiàn)RN與原生通信的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08Javascript實(shí)現(xiàn)快速排序(Quicksort)的算法詳解
排序算法(Sorting algorithm)是計(jì)算機(jī)科學(xué)最古老、最基本的課題之一,要想成為合格的程序員,就必須理解和掌握各種排序算法。2015-09-09JavaScript實(shí)現(xiàn)的SHA-1加密算法完整實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的SHA-1加密算法,以完整實(shí)例形式分析了SHA-1加密算法的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-02-02JS來(lái)動(dòng)態(tài)的修改url實(shí)現(xiàn)對(duì)url的增刪查改
通過(guò)get方式提交post表單等方式來(lái)動(dòng)態(tài)修改url存在諸多的不妥,因此,想到了通過(guò)JS來(lái)動(dòng)態(tài)的修改url,來(lái)實(shí)現(xiàn)對(duì)url的增刪查改2014-09-09js實(shí)現(xiàn)手表表盤(pán)時(shí)鐘與圓周運(yùn)動(dòng)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)手表表盤(pán)時(shí)鐘與圓周運(yùn)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09Extjs4中tree的拖拽功能(可以兩棵樹(shù)之間拖拽) 簡(jiǎn)單實(shí)例
這篇文章主要介紹了Extjs4中tree的拖拽功能簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-12-12