风残落叶
风残落叶
  • 发布:2020-05-14 23:29
  • 更新:2020-11-18 23:19
  • 阅读:3163

【报Bug】uni.$emit和uni.$on传值有问题

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10企业版

HBuilderX类型: 正式

HBuilderX版本号: 2.6.16

浏览器平台: Chrome

浏览器版本: 81.0.4044.138

项目创建方式: HBuilderX

操作步骤:

一个页面通过uni.$emit传值并跳转页面,在新的页面中通过uni.$on监听,在回调函数中可以获取到值,uni.$on外获取不到

预期结果:

uni.$on监听的值在回调函数外也能获取到

实际结果:

uni.$on回调函数获取得到值,回调函数外获取不到

bug描述:

比如在index页面触发uni.$emit并跳转到home页面

//index.vue页面  
                          goPage(){  
                uni.$emit("home","home");  
                uni.navigateTo({  
                    url:"/pages/home/home"  
                })  
            }

在home页面uni.$on的回调函数可以拿到值,但是外面不行

//home.vue页面  
onLoad() {  
             uni.$on("home",(data)=>{  
                this.title=data;  
                console.log(this.title);//有值  
            });  
            setTimeout(_=>{  
                console.log(this.title);//无值  
            },1000);  
                        console.log(this.title);//无值  
        },
2020-05-14 23:29 负责人:DCloud_UNI_HT 分享
已邀请:
8***@qq.com

8***@qq.com

先发事件再监听?
跳转直接就能带过去的事情,还需要用什么事件

风残落叶

风残落叶 (作者)

??

刘林

刘林

我也遇到了

刘林

刘林

快快

我嘞个去

我嘞个去 - 在uni泥潭中越陷越深

这个问题在H5和电脑端小程序才会出现,也困扰我挺久的。然后我直接放弃这种方法,直接传参过去

我嘞个去

我嘞个去 - 在uni泥潭中越陷越深

可以试一下,第一次跳转的时候是没有把值传过去的

1***@qq.com

1***@qq.com

vue没学好,跟uniapp无关

  • 风残落叶 (作者)

    不然是什么问题?

    2020-05-22 21:55

  • superGood

    我问下 如果我A有延迟,B直接获取当前,延迟执行后,怎么通知给B?

    2021-10-20 16:04

DCloud_UNI_HT

DCloud_UNI_HT

如果页面没有打开,将不能注册监听事件 uni.$on 和 uni.$once 。

如果需要给未打开的页面传参,使用url传参,或者使用vuex

  • 嘟嘟丶嘟

    同一个页面的组件传值,也是这样啊,改变不了值,也不会渲染

    2020-08-27 09:55

  • DCloud_UNI_HT

    回复 嘟嘟丶嘟: 上传一下代码片段,如果你想题主一样的用法,那明显是错误的

    2020-08-27 12:02

  • 嘟嘟丶嘟

    回复 DCloud_UNI_HT: 好像是,我又试了一遍,它的值能改变了,就是第一次没有触发,如果在父组件中向子组件传值,用$emit,$on,应该在子组件的哪里去触发$on呢???

    2020-08-28 10:52

  • DCloud_UNI_HT

    回复 嘟嘟丶嘟: 父组件像子组件传值 ,不要使用emit/on , 使用 provide / inject 试一下

    2020-09-01 20:48

m***@126.com

m***@126.com

uni.$emit外面加个定时器延迟加载 不加定时器那边页面接收的到数据 但是页面渲染不到 延迟数大于或等于500毫秒 要不然会出现第一次加载无法获取数据问题

MonikaChen

MonikaChen

应该是只能在打开过的页面才能监听把,毕竟要注册监听器

该问题目前已经被锁定, 无法添加新回复