明天的明天 永远的永远 未知的一切 我与你一起承担 ??

是非成败转头空 青山依旧在 几度夕阳红 。。。
随笔 - 1277, 文章 - 0, 评论 - 214, 阅读 - 321万
  博客园  :: 首页  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

uni.$emit(eventName,OBJECT)

触发全局的自定义事件。附加参数都会传给监听器回调。

uni.$on(eventName,callback)

监听全局的自定义事件。事件可以由 uni.$emit 触发,回调函数会接收所有传入事件触发函数的额外参数。

uni.$once(eventName,callback)

监听全局的自定义事件。事件可以由 uni.$emit 触发,但是只触发一次,在第一次触发之后移除监听器。

uni.$off([eventName, callback])

移除全局自定义事件监听器。

注意事项

  • uni.$emit、 uni.$on 、 uni.$once 、uni.$off 触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等
  • 使用时,注意及时销毁事件监听,比如,页面 onLoad 里边 uni.$on 注册监听,onUnload 里边 uni.$off 移除,或者一次性的事件,直接使用 uni.$once 监听

使用场景

进入app,是未登陆状态,需要在我的页面点击登陆,进入登陆页面进行登陆。登陆成功之后,返回到我的页面,实时显示登陆后的用户信息。

1、在我的页面,监听事件

复制代码
<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() {
            // 监听事件,使用 uni.$emit 触发事件后,对应的 uni.$on 就会监听到事件触发,在回调中去执行相关的逻辑。
            uni.$on('login', (usnerinfo) => {
                this.usnerinfo = usnerinfo;
            })
        },
        onUnload() {
            // 移除监听事件  
            uni.$off('login');
        },
        methods: {
            toLogin() {
                uni.navigateTo({
                    url: '/pages/a/a'
                })
            },
        }
    }
</script>
复制代码

2、在登录页,触发事件

复制代码
<template>
    <view class="content">
        <view class="data" @click="doLogin">触发方法,获取用户信息</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 触发事件后,对应的 uni.$on 就会监听到事件触发,在回调中去执行相关的逻辑。

相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2020-03-06 Java 判断字符串是否为数字(浮点类型也包括)
2020-03-06 MySQL 判断某字段是否包含中文或字母字符的方法
2017-03-06 C# Lambda表达式
2017-03-06 Win10 兼容性 Visual studio web应用程序 ASP.NET 4.0 尚未在 Web 服务器上注册
2007-03-06 SQL基本语法 ~~~与大家分享~~~~
2007-03-06 什么决定了我们的薪水?
点击右上角即可分享
微信分享提示