收藏
回答

使用navigateBack返回上一页面时怎么返回参数

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 navigateBack 客户端 6.5.3 2.0.4

- 需求的场景描述(希望解决的问题)

A页面点击图片,用户选择拍照,调用camera页面,使用navigateTo跳转到camera页面,camera页面拍照后,返回拍摄的照片到A页面,将页面base64处理传到后台服务。

现在跳转到camera页面后执行了拍照操作但是拍摄的照片没传到,具体看下面截图

截图1是camera.js中的,我通过setData和在app.JS中建立的参数赋值,但是在A页面都没读取到

截图2是A页面执行用户选择拍照的话,就navigateTo到camera页面,成功的话就执行callStage()方法

截图3是callStage方法,调用wx.getFileSystemManager().readFile方法,就是在readFile时获取不到camera页面返回的参数

截图4是编译的报错



- 希望提供的能力


回答关注问题邀请回答
收藏

2 个回答

  • 小程序商城定制开发2600元全包
    小程序商城定制开发2600元全包
    06-09

    wx.navigateBack()不能像其他导航一样通过url传参,因此只能使用其他方法:

    先说两个可以实现但弊端很大的方法:

    1、将数据存到app.globalData中,然后返回上一页面从全局数据中获取

            弊端:数据为全局数据,必须谨慎维护,否则全局某处做出修改,牵一发而动全身

    2、将数据存到本地缓存中(localStorage),然后从缓存中获取  

            弊端:本地缓存空间大小存在限制,若空间不足会自动清除其中最久未使用的数据,同样可能会造成意想不到的影响

    so?还有一个比较完美的方法,就是:

    使用getCurrentPages()函数获取页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

    官方文档参考:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/route.html?search-key=getCurrentPages

    var pages = getCurrentPages();
    
    var currPage = pages[pages.length - 1];   //当前页面
    
    var prevPage = pages[pages.length - 2];  //上一个页面
    
     
    
    //直接调用上一个页面对象的setData()方法,把数据存到上一个页面中去
    
    prevPage.setData({
    
      datadata
    
    });
    
    wx.navigateBack({
    
            delta: 1
    
          })
    
    06-09
    有用 1
    回复
  • ( ̄o ̄) . z Z
    ( ̄o ̄) . z Z
    2019-07-26

    存到缓存

    2019-07-26
    有用
    回复 3
    • fighting
      fighting
      2019-07-26
      请问我存到缓存后,返回上一页面是在onshow里接收吗
      2019-07-26
      回复
    • Mr.Zhao
      Mr.Zhao
      2019-07-26回复fighting
      是的
      2019-07-26
      回复
    • ( ̄o ̄) . z Z
      ( ̄o ̄) . z Z
      2019-07-26回复fighting
      2019-07-26
      回复
登录 后发表内容