一、回退上一級頁面
返回頁面同時需要刷新數據
var pages = getCurrentPages(); //當前頁面
var beforePage = pages[pages.length - 2]; //前一頁
beforePage.onLoad(); // 執行前一個頁面的onLoad方法
wx.navigateBack({
delta: 1
});
二、回退 3 級頁面 wx.
當我們頁面跳轉到三級頁面后網頁返回小程序,點擊左上角的返回按鈕,能夠直接返回到首頁
onUnload:function(){
wx.navigateBack({
delta: 3
})
}
wx.redirectTo({
url: url
})
三、回退 4 級或者更多級頁面,wx.
onUnload() {
console.log('返回按鈕')
wx.reLaunch({
url: '/pages/index/index'
})
}
四、返回多級頁面,同時刷新
比如我們現在希望在第四級頁面返回首頁后刷新網頁返回小程序,我們需要在 方法中調用 () 方法
onShow() {
this.onLoad({
age: '18'
})
}
onShow() {
this.onLoad()
}
五、帶參數返回上個頁面
var pages = getCurrentPages(); //當前頁面
var prevPage = pages[pages.length - 2]; //上個頁面
// 直接給上一個頁面賦值
prevPage.setData({
params: this.data.params
});
wx.navigateBack({
delta: 1
})
data: {
params: null,
},
onShow: function () {
console.log(this.data.params)
}
在 data 里定義屬性后,也可以獲取到上個頁面傳過來的值
六、對于攜帶不同參數的情況,頁面跳轉最好不要采用帶參跳轉方式,采用全局變量方式比較好
比如:
從 A 頁面到 B 頁面帶的對象 a = {name: '小明', age: '18'}
從 C 頁面到 B 頁面帶的對象 c = {pname: '小紅', page: '17'}
像這樣對象內部的字段名稱不一樣,B頁面在拿到該對象后無法解析
在全局中定義變量 e ,在 A 頁面中跳轉前設置
app.globalData.e.name = a.name;
app.globalData.e.age = a.age;
wx.navigateTo({
url: 'B'
})
在全局中定義變量 e ,在 C 頁面中跳轉前設置
app.globalData.e.name = c.pname;
app.globalData.e.age = c.page;
wx.navigateTo({
url: 'B'
})
在 B 頁面 () 方法中取值
this.obj = app.globalData.e,
console.log(obj.name);
console.log(obj.age);
原文: