背景:我们在vue页面和nvue页面之间进行传值可以使用uni.emit和uni.onsh事件监听实现,官网描述:uni-app官网 (dcloud.net.cn)https://uniapp.dcloud.net.cn/api/window/communication.html#emit
而且官网上也明确说明了:
一、问题:vue页面->nvue页面传值无法赋值
在使用这个的时候碰到了问题,就是**说vue页面->nvue页面传值,在nvue页面无法通过this.xxx=data这样赋值给nvue页面的data数据,**很奇怪。
二、解决:
2.1设置延迟
在vue页面:(在这个页面设置延迟)
在nvue页面:
2.2设置参数在本地缓存main.js里面
但是一有这个情况不可能全放进去,不太现实
2.3嵌套使用
思路:在你使用emit的页面使用1个on嵌套 然后去你想on接收的页面触发上面1个on的事件(这个方法是网上找的,大佬说可以实现,我没试过。)
onUnload() {
uni.$off('need');
},
methods: {
price: function(id) {
uni.$on('need',()=>{
uni.$emit('price', {
msg:'传参'
})
});
}
}
onLoad() {
uni.$on('price',(res)=>{
this.msg = res.msg;
});
uni.$emit('need');
},
onUnload() {
uni.$off('price');
}
补充:在研究这个情况的时候,曾一度以为是this指向出现问题,其不再指向当前Vue
实例而是指向别处导致无法赋值,如果上面的方法不行可以看看是否this指向问题。
三、nvue页面->vue页面传值
没有测试,但网上查到有说直接接可以正常显示传递的数据
四、nvue页面->nvue页面传值
自己使用可以正常传递并赋值