1. 程式人生 > >微信小程式——帶參返回上一頁幾種方法

微信小程式——帶參返回上一頁幾種方法

方法一 

把當前頁面資料放入本地快取( 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
})

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,
}

注意:方法一,方法三,都需要重新重新整理頁面資料所走方法為:

/**
* 生命週期函式--監聽頁面顯示
*/
onShow: function () {

},