小程序的頁面跳轉(zhuǎn)API像wx.navigateTo()、wx.redirectTo()之類的,都是跳轉(zhuǎn)到一個全新的頁面,當這個頁面是表單的時候,有時候需要跳轉(zhuǎn)到其它頁面選取信息后再跳轉(zhuǎn)回來,那之前填的信息就必須得存在,這個時候可以當跳轉(zhuǎn)到選擇信息的頁面,選中信息后設(shè)置設(shè)置上一頁的data,然后再返回到上一頁,這樣數(shù)據(jù)都會存在。
方法一
把當前頁面數(shù)據(jù)放入本地緩存( wx.setStorage(wx.setStorageSync),上一個頁面再從緩存中取出(wx.getStorage(wx.getStorageSync))同時退出登錄時要清除緩存(wx.clearStorage(wx.clearStorageSync))。
方法二
-
-
在當前頁設(shè)置上一頁的data,例如
-
var pages = getCurrentPages(); // 獲取頁面棧
-
var currPage = pages[pages.length - 1]; // 當前頁面
-
var prevPage = pages[pages.length - 2]; // 上一個頁面
-
prevPage.setData({
-
mydata: {a:1, b:2} // 假數(shù)據(jù)
-
})
當然這個“mydata”必須是上一頁有的數(shù)據(jù)才行
返回上一頁的數(shù)據(jù)為:
-
-
wx.navigateBack({
-
delta: 1
-
})
2、直接調(diào)用方法名來更新數(shù)據(jù) 頁面A
-
Page({
-
data: {
-
name: ''
-
},
-
...
-
,
-
//更新name
-
changeData: function(name){
-
this.setData({
-
name: name
-
})
-
}
-
})
頁面B,假設(shè)有一個文本框用于輸入姓名,點擊返回按鈕后更新頁面A的name
-
Page({
-
//此方法用于文本框輸入回調(diào)
-
inputTyping: function (e) {
-
//獲取頁面棧
-
var pages = getCurrentPages();
-
if(pages.length > 1){
-
//上一個頁面實例對象
-
var prePage = pages[pages.length - 2];
-
//關(guān)鍵在這里
-
prePage.changeData(e.detail.value)
-
}
-
}
-
})
這樣就可以實現(xiàn)數(shù)據(jù)傳遞給上一個頁面,要注意頁面A必須使用wx.navigateTo跳轉(zhuǎn)到頁面B,不能使用wx.redirectTo,這樣會關(guān)閉上一個頁面,導(dǎo)致頁面B無法獲取上一頁Page實例。
方法三 在app.js中設(shè)置全局變量,當前頁賦值,上一頁取之
方法為
-
globalData: {
-
userInfo: null,
-
}
注意:方法一,方法三,都需要重新刷新頁面數(shù)據(jù)所走方法為:
-
/**
-
* 生命周期函數(shù)--監(jiān)聽頁面顯示
-
*/
-
onShow: function () {
-
-
},
|