微信小程序页面栈_微信小程序使用页面栈改变上一页面的数据
微信小程序中如果從一個(gè)頁面中進(jìn)入下一個(gè)頁面,如果下個(gè)頁面的數(shù)據(jù)有刪除或者增加再返回上一個(gè)頁面的時(shí)候,就會導(dǎo)致頁面不刷新(數(shù)據(jù)加載函數(shù)在onload中),從而造成數(shù)據(jù)不一致的情況。其實(shí)在微信小程序中是可以實(shí)現(xiàn)改變上一個(gè)頁面中的數(shù)據(jù)似的前后兩個(gè)頁面數(shù)據(jù)一致的。
一般的方法可以使用本地緩存將當(dāng)前頁面的數(shù)據(jù)放入,回到上級頁面的時(shí)候再從緩存中讀取出來,還有就是使用頁面棧的。
獲取當(dāng)前頁面棧的實(shí)例可以通過getCurrentPages() 函數(shù)。以數(shù)組形式按棧的順序給出,第一個(gè)元素為首頁,最后一個(gè)元素及時(shí)當(dāng)前頁面。
以下為頁面棧的使用例子:
前一頁面:
Page({
data: {
name: ''
},
...
,
//更新name
changeData: function(name){
this.setData({
name: name
})
}
})
當(dāng)前頁面:
Page({
//此方法用于文本框輸入回調(diào)
inputTyping: function (e) {
//獲取頁面棧
var pages = getCurrentPages();
var Page = pages[pages.length - 1];//當(dāng)前頁
var info = prevPage.data //取上頁data里的數(shù)據(jù)也可以修改
if(pages.length > 1){ //說明有上一頁存在
//上一個(gè)頁面實(shí)例對象
var prePage = pages[pages.length - 2];
//關(guān)鍵在這里,調(diào)用上一頁的函數(shù)
prePage.changeData(e.detail.value)
}
}
})
這樣就可以實(shí)現(xiàn)數(shù)據(jù)傳遞給上一個(gè)頁面,要注意頁面上一頁面必須使用wx.navigateTo()跳轉(zhuǎn)到下一頁面,不能使用wx.redirectTo,這樣會關(guān)閉上一個(gè)頁面,導(dǎo)致頁面B無法獲取上一頁P(yáng)age實(shí)例。
總結(jié)
以上是生活随笔為你收集整理的微信小程序页面栈_微信小程序使用页面栈改变上一页面的数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国寿嘉年188和国寿安鑫盈360的区别,
- 下一篇: wpf 使子ui元素可视区域不超过父元素