问题阐述:
a: uni.$emit('name',data)
uni.navigateTo({url:b})b:onload(){
uni.$on('name',(res)=>{this.name=res
console.log(this.name)})}
用以上写法来跨页面传参会发现在b页面,虽然能够接受到参数但是赋值到data时候没生效,虽然控制台能够打印出数据,但是页面上面并不会动态改变。用setTimeout包裹也没有用
如果想要用$emit和 $on来跨页面传参,只适合以下情况
a页面->b页面
a页面$on('name',()=>{setTimeout(()=>{})}) b页面$emit
也就是说$on监视器声明一定要在触发前才能用
解决方法
如果想要实现a->b传值可以这样
a: uni.navigateTo({url: url,success:(res)=>{
res.eventChannel.emit("data", data);},});b:onLoad(){const eventChannel =this.getOpenerEventChannel();
eventChannel.on("data",(res)=>{});},
标签:
uni-app
本文转载自: https://blog.csdn.net/weixin_43907110/article/details/132583710
版权归原作者 小吴头大 所有, 如有侵权,请联系我们删除。
版权归原作者 小吴头大 所有, 如有侵权,请联系我们删除。