微信小程序是個(gè)很不錯(cuò)的東西,但是在開(kāi)發(fā)微信小程序的時(shí)候,總是會(huì)遇到一些特殊的問(wèn)題,其中navigator導(dǎo)航算是一個(gè)對(duì)剛接觸小程序開(kāi)發(fā)的程序員來(lái)說(shuō)應(yīng)該算是個(gè)比較深的坑了吧。
雖然有微信提供的文檔接口和開(kāi)發(fā)者工具,完成起來(lái)總是感覺(jué)那么暢快,但是在手機(jī)上預(yù)覽后,總是會(huì)有這樣那樣的問(wèn)題:(附上官方文檔)
navigator的open-type屬性 可選值 'navigate'、'redirect'、'switchTab',對(duì)應(yīng)于wx.navigateTo、wx.redirectTo、wx.switchTab的功能
open-type="navigate"等價(jià)于API的 wx.navigateTo 而wx.navigateTo的url是需要跳轉(zhuǎn)的應(yīng)用內(nèi)非 tabBar 的頁(yè)面的路徑
open-type="redirect"等價(jià)于API的 wx.redirectTo 而wx.redirectTo的url是需要跳轉(zhuǎn)的應(yīng)用內(nèi)非 tabBar 的頁(yè)面的路徑
open-type="switchTab"等價(jià)于API的 wx.switchTab而wx.switchTab的url是需要跳轉(zhuǎn)到 tabBar 頁(yè)面,并關(guān)閉其他所有非 tabBar 頁(yè)面
最后一個(gè)switchTab事件觸發(fā)以后 把前面的頁(yè)面都關(guān)閉了
//跳轉(zhuǎn)到 tabBar 頁(yè)面,并關(guān)閉其他所有非 tabBar 頁(yè)面 // url 需要跳轉(zhuǎn)的 tabBar 頁(yè)面的路徑(需在 app.json 的 tabBar 字段定義的頁(yè)面),路徑后不能帶參數(shù) wx.switchTab({url:'index/index'})//關(guān)閉所有頁(yè)面,打開(kāi)到應(yīng)用內(nèi)的某個(gè)頁(yè)面。 // url 需要跳轉(zhuǎn)的應(yīng)用內(nèi)頁(yè)面路徑 , 路徑后可以帶參數(shù)。參數(shù)與路徑之間使用?分隔,參頁(yè)面 數(shù)鍵與參數(shù)值用=相連,不同參數(shù)用&分隔;如 'path?key=value&key2=value2',如果跳轉(zhuǎn)的頁(yè)面路徑是 tabBar 頁(yè)面則不能帶參數(shù) wx.reLaunch({url:'test?id=1'}) //關(guān)閉當(dāng)前頁(yè)面,返回上一頁(yè)面或多級(jí)頁(yè)面??赏ㄟ^(guò) getCurrentPages()) 獲取當(dāng)前的頁(yè)面棧,決定需要返回幾層。 wx.navigateBack({delte:1})//返回上一個(gè)頁(yè)面 //保留當(dāng)前頁(yè)面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè)面,使用wx.navigateBack可以返回到原頁(yè)面 wx.navigateTo({url:'test?id=2'}) // 關(guān)閉當(dāng)前頁(yè)面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁(yè) 面。 wx.redirectTo(OBJECT) 注: navigateTo, redirectTo 只能打開(kāi)非 tabBar 頁(yè)面。 switchTab 只能打開(kāi) tabBar 頁(yè)面。 reLaunch 可以打開(kāi)任意頁(yè)面。 頁(yè)面底部的 tabBar 由頁(yè)面決定,即只要是定義為 tabBar 的頁(yè)面,底部都有 tabBar。 調(diào)用頁(yè)面路由帶的參數(shù)可以在目標(biāo)頁(yè)面的onLoad中獲取。