赞
踩
从A页面跳转到B页面,在B点击产生数据后,跳转回到A,并告诉A点击的数据是什么,使用:
navigateBack()。
(页面跳转流程: A->B ->A)
B页面:
- toPage() {
- uni.navigateBack({
- complete: (res) => {
- console.log(">>>com ", res)
- this.getOpenerEventChannel().emit('selecteCust', this.selectCustomer)
- },
- success: (res) => {
- console.log(">>>res", res)
- // res.eventChannel.emit('testCust', {data: this.selectCustomer})
- // 打开成功的话, 向打开的页面传递数据,传递的事件名:selecteCust
- this.getOpenerEventChannel().emit('selecteCust', this.selectCustomer)
-
- }
- })
- },
A页面:
eventChannel.on无法监听到B传递过的事件: selecteCust
- onLoad() {
- // 监听事件
- this.ec = this.getOpenerEventChannel();
- console.log(">|--,,,,,,,,,,,eventchannel", this.ec)
- this.ec.on('testCust', (res) => {
- console.log("................selecteCust,监听到了", res)
- })
- },
分析:当前传递参数方式是下级给上级传递消息,使用navigiateBack()话,要在跳转之后再
- onLoad() {
-
- // 监听事件
- this.ec = this.getOpenerEventChannel();
- console.log(">|--,,,,,,,,,,,eventchannel", this.ec)
- this.ec.on('testCust', (res) => {
- console.log("................selecteCust,监听到了", res)
- this.customer = res.data
- })
- },
效果:
方式2:
A->B->A, A跳转地方添加监听event
- selectA() {
- uni.navigateTo({
- url: '/pages/custList',
- // 页面跳转回来事件监听
- events: {
- selecteCust: (data) => {
- console.log(">>选中的客户是", data)
- }
- })
- },
两者使用起来其实差不多,都可以达到父传子,子传父的作用。但是因为作用域的原因,evenetChannel在不同页面的变量可以重名,eventChannel更适合父传子,uni.$on适合子传父
官方文档:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。