沃特阿有杜英
沃特阿有杜英
  • 发布:2019-12-12 15:02
  • 更新:2019-12-12 15:47
  • 阅读:1115

uni.navigateBack 回传多个页面一起执行?

分类:uni-app

A B C三个页面 C是一个公用组件。
A uni.navigateTo 到C 然后回传值 uni.$emit('item1',true) uni.navigateBack返回。 A onLoad()里uni.$on接收。
B uni.navigateTo 到C 然后回传值 uni.$emit('item2',true) uni.navigateBack返回。 B onLoad()里uni.$on接收。
C页面同时写的uni.$emit('item1',true) uni.$emit('item2',true)
现在是 只要C回传 A B都会执行。请问是我方法用错了还是有其他方法实现组件复用指定回传 请指导

2019-12-12 15:02 负责人:无 分享
已邀请:
沃特阿有杜英

沃特阿有杜英 (作者) - what are you doing

我好像自己解决了~
A 页面接收数据写在 onShow()里面同时 在这里关闭B uni.$on监听事件
B 页面接收数据写在 onShow()里面同时 在这里关闭A uni.$on监听事件

这是A

onShow(){  
    var that=this  
    uni.$on('A的监听方法名', function (data) {  
        if(data==true){  
            console.log(data,'返回值')  
        }  
    });  
    uni.$off('B的监控方法名');  
},

这是B


onShow(){  
    var that=this  
    uni.$on('B的监听方法名', function (data) {  
        if(data==true){  
            console.log(data,'返回值')  
        }  
    });  
    uni.$off('A的监控方法名');  
},  

```.  
onShow:     监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面.  
原理就是利用onShow 每次展示页面关闭对方监听 打开自己页面监听 这样回传值就只能被打开的页面监听到。  
不过有一点 如果这个组件复用次数太多 那这里的$off得写很多,还有其他方法没

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