一芥驳、回退上一級頁面 beforePage
返回頁面同時需要刷新數(shù)據(jù)
var pages = getCurrentPages(); //當前頁面
var beforePage = pages[pages.length - 2]; //前一頁
beforePage.onLoad(); // 執(zhí)行前一個頁面的onLoad方法
wx.navigateBack({
delta: 1
});
二兆旬、回退 3 級頁面 wx.navigateBack
當我們頁面跳轉(zhuǎn)到三級頁面后怎栽,點擊左上角的返回按鈕宿饱,能夠直接返回到首頁
- wx.navigateBack 這個方法可以返回界面 在 onUnload 觸發(fā)的時候可以執(zhí)行宝鼓。但是我發(fā)現(xiàn)這個方法確實可以回到首頁,但是他會一個一個界面返回蛉签,不能直接返回到首頁
onUnload:function(){
wx.navigateBack({
delta: 3
})
}
- 正常 A -> B -> C 都是通過 wx.navigateTo 跳轉(zhuǎn)的沥寥,所以 wx.navigateBack 只能返回上一界面,如果要返回到 A 界面就會出現(xiàn) C -> B -> A 的效果邑雅。
如果想實現(xiàn) A -> B -> C 當 C 點擊返回時, 實現(xiàn)直接 C -> A 這種效果就只能 A -> B 通過 wx.navigateTo 跳轉(zhuǎn) B -> C 通過 wx.redirectTo 跳轉(zhuǎn)捧书,跳轉(zhuǎn)觸發(fā)后 B 頁面就會被銷毀骤星,C 頁面再返回 wx.navigateBack 就會直接到 A 了。
wx.redirectTo({
url: url
})
三舆吮、回退 4 級或者更多級頁面队贱,wx.reLaunch
onUnload() {
console.log('返回按鈕')
wx.reLaunch({
url: '/pages/index/index'
})
}
四、返回多級頁面锋恬,同時刷新
比如我們現(xiàn)在希望在第四級頁面返回首頁后刷新编丘,我們需要在 onShow 方法中調(diào)用 onLoad() 方法
- 頁面需要帶參進來的情況
onShow() {
this.onLoad({
age: '18'
})
}
- 頁面不需要帶參的情況
onShow() {
this.onLoad()
}
五、帶參數(shù)返回上個頁面
- 當前頁面
var pages = getCurrentPages(); //當前頁面
var prevPage = pages[pages.length - 2]; //上個頁面
// 直接給上一個頁面賦值
prevPage.setData({
params: this.data.params
});
wx.navigateBack({
delta: 1
})
- 要跳轉(zhuǎn)的頁面
data: {
params: null,
},
onShow: function () {
console.log(this.data.params)
}
在 data 里定義屬性后,也可以獲取到上個頁面?zhèn)鬟^來的值
六蜗巧、對于攜帶不同參數(shù)的情況,頁面跳轉(zhuǎn)最好不要采用帶參跳轉(zhuǎn)方式蓝丙,采用全局變量方式比較好
比如:
從 A 頁面到 B 頁面帶的對象 a = {name: '小明', age: '18'}
從 C 頁面到 B 頁面帶的對象 c = {pname: '小紅', page: '17'}
像這樣對象內(nèi)部的字段名稱不一樣,B頁面在拿到該對象后無法解析
在全局中定義變量 e 渺尘,在 A 頁面中跳轉(zhuǎn)前設(shè)置
app.globalData.e.name = a.name;
app.globalData.e.age = a.age;
wx.navigateTo({
url: 'B'
})
在全局中定義變量 e ,在 C 頁面中跳轉(zhuǎn)前設(shè)置
app.globalData.e.name = c.pname;
app.globalData.e.age = c.page;
wx.navigateTo({
url: 'B'
})
在 B 頁面 onLoad() 方法中取值
this.obj = app.globalData.e,
console.log(obj.name);
console.log(obj.age);