美文网首页微信小程序微信小程序开发微信开发运营
小程序——带参返回上一页几种方法

小程序——带参返回上一页几种方法

作者: honey缘木鱼 | 来源:发表于2018-06-09 10:18 被阅读2次

    小程序的页面跳转API像wx.navigateTo()、wx.redirectTo()之类的,都是跳转到一个全新的页面,当这个页面是表单的时候,有时候需要跳转到其它页面选取信息后再跳转回来,那之前填的信息就必须得存在,这个时候可以当跳转到选择信息的页面,选中信息后设置设置上一页的data,然后再返回到上一页,这样数据都会存在。

    方法一
    把当前页面数据放入本地缓存( wx.setStorage(wx.setStorageSync),上一个页面再从缓存中取出(wx.getStorage(wx.getStorageSync))同时退出登录时要清除缓存(wx.clearStorage(wx.clearStorageSync))。

    方法二

    1. 在当前页设置上一页的data,例如
    var pages = getCurrentPages();             //  获取页面栈
    var currPage = pages[pages.length - 1];    // 当前页面
     var prevPage = pages[pages.length - 2];    // 上一个页面
     prevPage.setData({
       mydata: {a:1, b:2}                       // 假数据
     })
    

    当然这个“mydata”必须是上一页有的数据才行

    返回上一页的数据为:

    wx.navigateBack({
     delta: 1
     })
    
    1. 直接调用方法名来更新数据
    页面A
    Page({
         data: {
            name: ''
         },
         ...
         ,
         //更新name
         changeData: function(name){
            this.setData({
                name: name
            })
         }
    })
    

    页面B,假设有一个文本框用于输入姓名,点击返回按钮后更新页面A的name

    Page({
        //此方法用于文本框输入回调
        inputTyping: function (e) {
            //获取页面栈
            var pages = getCurrentPages();
            if(pages.length > 1){
                //上一个页面实例对象
                var prePage = pages[pages.length - 2];
                //关键在这里
                prePage.changeData(e.detail.value)
            }
        }
    })
    

    这样就可以实现数据传递给上一个页面,要注意页面A必须使用wx.navigateTo跳转到页面B,不能使用wx.redirectTo,这样会关闭上一个页面,导致页面B无法获取上一页Page实例。

    方法三
    在app.js中设置全局变量,当前页赋值,上一页取之

    方法为

    globalData: {
        userInfo: null,
      }
    

    注意:方法一,方法三,都需要重新刷新页面数据所走方法为:

    /**
       * 生命周期函数--监听页面显示
       */
      onShow: function () {
        
      },
    

    相关文章

      网友评论

        本文标题:小程序——带参返回上一页几种方法

        本文链接:https://www.haomeiwen.com/subject/yufteftx.html