微信小程式——帶參返回上一頁幾種方法
阿新 • • 發佈:2019-01-11
方法一
把當前頁面資料放入本地快取( 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 () {
},