uni-app 实现 把当前页数据返回上一页------ uni.navigateBack()

在uni-app中,实现从B页面修改A页面的数据并使用uni.navigateBack()返回,由于官方移除了setData的写法,推荐使用事件监听和参数传递。详细介绍了B页面如何触发A页面的方法,以及页面同步的问题,同时也提到了使用全局变量作为替代方案的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

可以用的 用回原版(亲测可用  就是写多了就麻烦)

通过B页面修改A页面值

//我的页面监听事件。 A页

onLoad(){  //页面加载事件
    // 监听事件  
    uni.$on('login',(ddaatt)=>{  
        this.AAA= ddaatt.AAA; //ddaatt.BBB
        
    })  
},  
onUnload() {  //监听页面卸载
    // 移除监听事件  
        uni.$off('login');  
    },

触发事件  B页( B页触发A页)

在其他方法里写这个就ok了

uni.$emit('login', {   
                AAA: 'unier',
                BBB: 'unier1123'
            });

 

 

这个写法 淘汰了  由于官方去除了setData 的写法 后面的就没意义了   可以看下

先说下我要实现的功能 : 我是想关闭当前页面,返回上页面,且修改上一页面data里的值。(这个app和小程序通用)

  上代码:(我也是刚接触到uni-app  代码可能不够好,请见谅  )

 

解释   ------>      A是  上一页               B是   下一页

B页要写的

在 methods: { 。。。 }  下写下面的代码

	click_qd:function(){//一个点击事件
				var pages=getCurrentPages(), prevPage=null;
   if(pages.length>1){
       prevPage=pages[pages.length-2];
   }
   if(prevPage){
	   console.log(JSON.stringify(prevPage.data));//输出上一页的结构  app  和  小程序  不一样
	   
           
           prevPage.data.inpp='213212312';//错误写法  也不算错 能改 但是不是 data数据
	  
	   
          //正确写法  要和上一页的(A)  onshow  配合使用
	   prevPage.setData({ hope_job:"test"  })
		
   }
   uni.navigateBack();
				
			}

A页要写的

在 export default {。。。}  下写

onShow:function(e){
       let pages = getCurrentPages();
       let currPage = pages[pages.length-1];
       if (currPage.data.hope_job==""){
            this.getHopeJob();
        }else{
            this.hope_job = currPage.data.hope_job
           this.inpp = currPage.data.hope_job  //这个this.inpp 可预先在data() {return { inpp:"" 里面定义



           console.log(this.inpp )
			
        }

          }

页面的同步  下面的调用不同步(通this.xxxx   是获取不了的 只是之前的值  原因是异步 上面的不会出现这情况 )

 注意:  除了在index实现的  ‘底部导航栏‘ 例外    (因为onshow   onload  默认参数失效)

解释   ------>      A是  上一页               B是   下一页

 

B

	click_qd:function(){
				var pages=getCurrentPages(), prevPage=null;
   if(pages.length>1){
       prevPage=pages[pages.length-2];
   }
   if(prevPage){
	  // console.log(JSON.stringify(prevPage.data));
	  if(this.address_dz !=null && this.address_dz !=""){
		     prevPage.setData({
		   address_end:this.address_dz
		     })
	  }
	
		
   }
   uni.navigateBack();
				
			}

 

 

A

export default {

data() {
			return {
             address_end:"花园"

                   }


     }


}

 

还有通过全局变量也能达到效果 

注意:全局变量 有持久的  和  XXX(不会表达  生效时间就是当前程序运行到结束    第二次运行软件 会以默认数据为准  )

 

这个自己可以搜下      如  uni 全局变量

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值