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