一个页面通过uni.$emit传值并跳转页面,在新的页面中通过uni.$on监听,在回调函数中可以获取到值,uni.$on外获取不到
- 发布:2020-05-14 23:29
- 更新:2020-11-18 23:19
- 阅读:3163
产品分类: uniapp/H5
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10企业版
HBuilderX类型: 正式
HBuilderX版本号: 2.6.16
浏览器平台: Chrome
浏览器版本: 81.0.4044.138
项目创建方式: HBuilderX
操作步骤:
预期结果:
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);//无值
},
如果页面没有打开,将不能注册监听事件 uni.$on 和 uni.$once 。
如果需要给未打开的页面传参,使用url传参,或者使用vuex
-
回复 DCloud_UNI_HT: 好像是,我又试了一遍,它的值能改变了,就是第一次没有触发,如果在父组件中向子组件传值,用$emit,$on,应该在子组件的哪里去触发$on呢???
2020-08-28 10:52