uniapp頁面通訊講解之uni.$emit、uni.$on、uni.$once和uni.$off
uni.$emit(eventName,OBJECT) | 觸發(fā)全局的自定義事件。附加參數(shù)都會(huì)傳給監(jiān)聽器回調(diào)。 |
uni.$on(eventName,callback) | 監(jiān)聽全局的自定義事件。事件可以由 uni.$emit 觸發(fā),回調(diào)函數(shù)會(huì)接收所有傳入事件觸發(fā)函數(shù)的額外參數(shù)。 |
uni.$once(eventName,callback) | 監(jiān)聽全局的自定義事件。事件可以由 uni.$emit 觸發(fā),但是只觸發(fā)一次,在第一次觸發(fā)之后移除監(jiān)聽器。 |
uni.$off([eventName, callback]) | 移除全局自定義事件監(jiān)聽器。 |
注意事項(xiàng)
- uni.$emit、 uni.$on 、 uni.$once 、uni.$off 觸發(fā)的事件都是 App 全局級別的,跨任意組件,頁面,nvue,vue 等
- 使用時(shí),注意及時(shí)銷毀事件監(jiān)聽,比如,頁面 onLoad 里邊 uni.$on 注冊監(jiān)聽,onUnload 里邊 uni.$off 移除,或者一次性的事件,直接使用 uni.$once 監(jiān)聽
使用場景
進(jìn)入app,是未登陸狀態(tài),需要在我的頁面點(diǎn)擊登陸,進(jìn)入登陸頁面進(jìn)行登陸。登陸成功之后,返回到我的頁面,實(shí)時(shí)顯示登陸后的用戶信息。
1、在我的頁面,監(jiān)聽事件
<template>
<view class="content">
<text v-if="usnerinfo">{{usnerinfo.userName}}</text>
<button v-else @click="toLogin">去登錄</button>
</view>
</template>
<script>
export default {
data() {
return {
usnerinfo: null
}
},
// 我的頁面
onLoad() {
// 監(jiān)聽事件,使用 uni.$emit 觸發(fā)事件后,對應(yīng)的 uni.$on 就會(huì)監(jiān)聽到事件觸發(fā),在回調(diào)中去執(zhí)行相關(guān)的邏輯。
uni.$on('login', (usnerinfo) => {
this.usnerinfo = usnerinfo;
})
},
onUnload() {
// 移除監(jiān)聽事件
uni.$off('login');
},
methods: {
toLogin() {
uni.navigateTo({
url: '/pages/a/a'
})
},
}
}
</script>因?yàn)槭录O(jiān)聽是全局的,所以使用 uni.$on ,需要使用 uni.$off 移除全局的事件監(jiān)聽,避免重復(fù)監(jiān)聽。
2、在登錄頁,觸發(fā)事件
<template>
<view class="content">
<view class="data" @click="doLogin">觸發(fā)方法,獲取用戶信息</view>
</view>
</template>
<script>
export default {
data() {
return {
usnerinfo: null
}
},
// 我的頁面
onLoad() {},
methods: {
doLogin() {
// 登陸頁面
uni.$emit('login', {
userName: 'lzzzzzzzzzzzzzzzzzzzzz',
login: true
});
uni.navigateBack({})
}
}
}
</script>
使用 uni.$emit 觸發(fā)事件后,對應(yīng)的 uni.$on 就會(huì)監(jiān)聽到事件觸發(fā),在回調(diào)中去執(zhí)行相關(guān)的邏輯。
總結(jié)
到此這篇關(guān)于uniapp頁面通訊講解之uni.$emit、uni.$on、uni.$once和uni.$off的文章就介紹到這了,更多相關(guān)uniapp uni.$emit uni.$on uni.$once uni.$off內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
微信小程序?qū)崿F(xiàn)購物頁面左右聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)購物頁面左右聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
JS使用正則表達(dá)式過濾多個(gè)詞語并替換為相同長度星號的方法
這篇文章主要介紹了JS使用正則表達(dá)式過濾多個(gè)詞語并替換為相同長度星號的方法,涉及javascript字符串與正則替換操作相關(guān)技巧,需要的朋友可以參考下2016-08-08
JavaScript數(shù)據(jù)結(jié)構(gòu)之棧實(shí)例用法
在本篇文章里小編給大家分享了關(guān)于JavaScript數(shù)據(jù)結(jié)構(gòu)之棧實(shí)例用法內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2019-01-01
JavaScript中隨機(jī)數(shù)方法?Math.random()
這篇文章主要介紹了JavaScript中隨機(jī)數(shù)方法?Math.random(),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
JS實(shí)現(xiàn)可用滑塊滑動(dòng)的緩動(dòng)圖代碼
這篇文章主要介紹了JS實(shí)現(xiàn)可用滑塊滑動(dòng)的緩動(dòng)圖代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09

