问题阐述:
javascript
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来跨页面传参,只适合以下情况
javascript
a页面->b页面
a页面$on('name',()=>{
setTimeout(()=>{})
}) b页面$emit
也就是说$on监视器声明一定要在触发前才能用
解决方法
如果想要实现a->b传值可以这样
javascript
a: uni.navigateTo({
url: url,
success: (res) => {
res.eventChannel.emit("data", data);
},
});
b: onLoad() {
const eventChannel = this.getOpenerEventChannel();
eventChannel.on("data", (res) => {
});
},