▷ 位置:首页 - 动态 - 小程序开发——带参返回上一页几种方法
小程序开发——带参返回上一页几种方法

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

方法一:

在当前页设置上一页的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
})

2、直接调用方法名来更新数据 

页面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,

  }


方法三:

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

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


/**

   * 生命周期函数--监听页面显示

   */

  onShow: function () {

  },

(转载小程序社区)

方快广州微信小程序开发公司版权所有 粤ICP备14046016

Copyright 2018 www.FangKuai5.com 广州小程序开发公司 All Rights Reserved