ljw.zw@foxmail.com
ljw.zw@foxmail.com
  • 发布:2018-09-20 11:00
  • 更新:2019-01-16 09:59
  • 阅读:3060

使用uni.navigateBack修改上一个页面值,多页面传参通信解决方案

分类:uni-app

此类需求大概意思是:A页面进入B页面,B页面返回并传值给A。

var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面

//直接调用上一个页面的setData()方法,把数据存到上一个页面中去
prevPage.setData({
mdata:1
})
uni.navigateBack(); //上一个页面数据无法修改

解决方案:onfire.js 是一个很简单的事件分发的Javascript库(仅仅 0.9kb),简洁实用。github地址:https://github.com/hustcc/onfire.js/blob/master/README_zh.md
可以用于:

  1. 简单的事件分发;
  2. 在 react / vue.js / angular 用于跨组件的轻量级实现;
  3. 事件订阅和发布;
    A页面:
    onShow:function(){
    var that = this;
    onfire.on('setAddressInfo',function(addressInfo){
    that.addressInfo = addressInfo;
    })
    },
    B页面:
    selectText: function(e){
    var that = this;
    var that_addressInfo ={
    location: e.currentTarget.id
    }
    onfire.fire('setAddressInfo',that_addressInfo);
    uni.navigateBack();
    }

参考来源:https://juejin.im/post/5907f120b123db3ee48d2a4f

1 关注 分享
xiangdeshan_120@sina.com

要回复文章请先登录注册

774303486@qq.com

774303486@qq.com

我来填个坑


main.js中全局引入 onfire

import onfire from "./components/onfire/onfire"
Vue.prototype.$fire = new onfire()

监听页面A中监听事件

this.$fire.on('sss',()=>{
console.log("收到事件")
})


发送页面B中 发送事件

this.$fire.fire('sss','data');
2019-01-16 09:59
774303486@qq.com

774303486@qq.com

回复 ljw.zw@foxmail.com: 你这个就扯淡了。两个页面都引入onfire肯定监听不到,都不是同一个对象了。要在全局引入再new出对象。然后AB子页面调用方法
2019-01-16 09:38
774303486@qq.com

774303486@qq.com

用起来感觉咋样?好用么,屌大的来讲一下
2019-01-15 16:46
41612021@qq.com

41612021@qq.com

uni-app 页面间和组件间通信解决方案 https://hao-love.wang/2019/01/09/uniapp-ye-mian-jian-he-zu-jian-jian-tong-xin-jie-j/
2019-01-09 15:19
DCloud_heavensoft

DCloud_heavensoft

回复 297008285@qq.com: http://ask.dcloud.net.cn/article/565
2018-11-22 05:17
297008285@qq.com

297008285@qq.com

回复 ljw.zw@foxmail.com: 好的,谢谢,还想问一下HBuilderX能WiFi调式吗?
2018-11-20 19:53
ljw.zw@foxmail.com

ljw.zw@foxmail.com (作者)

回复 297008285@qq.com: 两个页面中都引入 例:import onfire from '../../common/onfire.js';
A页面固定,提供属性值,例: addressInfo:{
location: '',
address: '点击选择地点',
name:''
},
打开B页面,获取数据赋到A页面提供的属性或方法中,例:var that_addressInfo ={
location: e.currentTarget.id,
address: e.currentTarget.dataset.address,
name:e.currentTarget.dataset.name,
formatted_address:that.formatted_address
}
onfire.fire('setAddressInfo',that_addressInfo);
2018-11-20 17:05
297008285@qq.com

297008285@qq.com

提示说没有找到变量
2018-11-20 16:17
297008285@qq.com

297008285@qq.com

您好,我想问一下,直接从GitHub 下载下来,把onfire文件直接放到项目中引入不行吗?我试了好久。没解决
2018-11-20 16:14