一 、基本跳轉(zhuǎn)
1.使用組件<navigator>標(biāo)簽來實(shí)現(xiàn)。
特點(diǎn):點(diǎn)擊有按下的效果
<navigator url="../job_detail/job_detail?isShowCompanyDetail=true&iscollect={{item.iscollect}}"> 跳轉(zhuǎn) </navigator>
2.給頁面布局加監(jiān)聽時(shí)間bindtap事件。然后在方法里面。通過wx.navigatorTo來實(shí)現(xiàn)跳轉(zhuǎn)。
特點(diǎn):點(diǎn)擊無按下的效果。
gotoPage: function () {
wx.navigateTo({
url: '../list/list',
success: function (res) {
// success
},
fail: function () {
// fail
},
complete: function () {
// complete
}
})
},
3.通過wx.redirectTo實(shí)現(xiàn)跳轉(zhuǎn)。
特點(diǎn):關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)某個(gè)頁面
toList: function (event) {
var provinceName = event.currentTarget.id;
wx.redirectTo({
url: '../city/city?province='+provinceName,
success: function (res) {
// success
},
fail: function () {
// fail
},
complete: function () {
// complete
}
})
}
4.wx.navigateBack方法
關(guān)閉當(dāng)前頁面。返回上一頁面或多級(jí)頁面
wx.navigateBack({
delta: 1, // 回退前 delta(默認(rèn)為1) 頁面
success: function (res) {
// success
},
fail: function () {
// fail
},
complete: function () {
// complete
}
})
給上一個(gè)頁面賦值
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2];//上一個(gè)頁面。
prevPage.setData({
bank_cn: bank_cn,
bank: bank
})
重點(diǎn):
tabBar里一般就是四個(gè)主頁面,這些主頁面之間的跳轉(zhuǎn)就像tab切換,這幾個(gè)頁面需要在tabBar里另外配置,普通頁面向這四個(gè)主頁面跳轉(zhuǎn)的時(shí)候,不能使用navigator,需用switchTab。
實(shí)例:從首頁跳到tabBar頁,并且要帶上參數(shù).首先我是這樣做的:
在index.js中:
toCategory:function(event){
var cate_id = event.currentTarget.dataset.cate_id;
wx.switchTab({
url: '../category/category?cate_id='+cate_id,
});
},
按照上面寫的在category.js里得不到數(shù)據(jù);
onLoad:function(options){
console.log(options);
}
然后查看了下官方文檔.
wx.switchTab(OBJECT)
跳轉(zhuǎn)到 tabBar 頁面,并關(guān)閉其他所有非 tabBar 頁面
OBJECT 參數(shù)說明:
| 參數(shù) | 類型 | 必填 | 說明 |
|---|---|---|---|
| url | String | 是 | 需要跳轉(zhuǎn)的 tabBar 頁面的路徑(需在 app.json 的 tabBar 字段定義的頁面),路徑后不能帶參數(shù) |
| success | Function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) |
| fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) |
| complete | Function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行) |
可以看到url路徑后不能帶參數(shù).這下就尷尬了.因?yàn)槲冶仨氁獛б粋€(gè)參數(shù)過去才能滿足業(yè)務(wù)的需求;走了一個(gè)捷徑.思路:跳轉(zhuǎn)的時(shí)候在全局變量里設(shè)置一個(gè)變量cate_id,調(diào)到category.js中后.調(diào)取全局變量里的cate_id,用完后,再把扎個(gè)變量清除掉.具體實(shí)施如下:
首頁index.js中:
toCategory:function(event){
var cate_id = event.currentTarget.dataset.cate_id;
app.globalData.cate_id=cate_id;//設(shè)置全局變量(app已經(jīng)定義 var app=getApp())
wx.switchTab({
url: '../category/category'
});
},
分類頁category.js中:
onLoad:function(options){
var that = this
var cate_id=app.globalData.cate_id
wx.request({
url: app.globalData.httpsurl +'public/index.php?s=product/index',
data:{
cate_id:cate_id,
},
success:function(res){
//清除全局變量cate_id
app.globalData.cate_id=""
that.setData({
alldata:res.data,
})
}
})
},
微信小程序wx.switchTab跳轉(zhuǎn)到tab頁面后onLoad里面的方法不執(zhí)行
解決這種問題的方法頁有很多中,最簡單的就是在啟動(dòng)頁添加跳轉(zhuǎn)成功的方法
wx.switchTab({
url: '/pages/index/index',
success: function (e) {
var page = getCurrentPages().pop();
if (page == undefined || page == null) return;
page.onLoad();
}
})
上面的轉(zhuǎn)化就可以完成業(yè)務(wù)邏輯的需要了.