1. 程式人生 > >微信小程式(九):頁面跳轉

微信小程式(九):頁面跳轉

功能點:頁面跳轉
本文基於微信小程式公測版,IDE:微信開發者工具 0.11.122100

這裡記錄一下小程式中頁面跳轉的方式。

從跳轉的方式(或說成開啟新頁面的方式)來說大致可分為:請求轉發請求重定向TAB頁跳轉(有過web經驗的話,應該很清楚兩種方式的區別),部分出自官方文件。

wx.navigateTo(OBJECT)

保留當前頁面,跳轉到應用內的某個頁面,使用wx.navigateBack可以返回到原頁面。

這裡寫圖片描述

注意點:小程式中要求頁面的層級最多隻能有五層,因為這種方式保留當前頁面,也就是說以這種方式跳轉頁面,最多隻能開啟5個頁面。

wx.redirectTo(OBJECT)

關閉當前頁面,跳轉到應用內的某個頁面。

這裡寫圖片描述

wx.switchTab(OBJECT)

跳轉到 tabBar 頁面,並關閉其他所有非 tabBar 頁面

這裡寫圖片描述

wx.navigateBack(OBJECT)

關閉當前頁面,返回上一頁面或多級頁面。可通過 getCurrentPages()) 獲取當前的頁面棧,決定需要返回幾層。

這裡寫圖片描述

注意點:
1.這裡需要強調一下小程式中以堆疊形式記錄頁面。每一個以wx.navigateTo(OBJECT) 方式跳轉的頁面都會被壓入堆疊,但是以wx.redirectTo(OBJECT) 開啟的頁面則不會。借用一下官方的例子,很清晰明瞭。

// 此處是A頁面
wx.navigateTo({
  url: 'B?id=1'
})

// 此處是B頁面
wx.redirectTo({
  url: 'C?id=1'
})

// 在C頁面內 navigateBack,將返回A頁面
wx.navigateBack()

**2.**wx.navigateTo 和 wx.redirectTo 不允許跳轉到 tabbar 頁面,只能用 wx.switchTab 跳轉到 tabbar 頁面

3. 跳轉的url是頁面的路徑(非Tab頁面),如需傳遞引數,要放在路徑之後,以 分隔,引數鍵與引數值用=相連,不同引數用&分隔

從寫的位置來說大致可分為兩種,一種是在頁面wxml檔案中以標籤的形式,另一種是程式碼的形式(這種上面已經列舉出來了,此處不再贅述)。

元件navigator

頁面連結。

這裡寫圖片描述

通過open-type 可以指定跳轉的方式是請求轉發,請求重定向還是TAB頁跳轉。(效果同上面js程式碼的效果,此處不再贅述)

這裡記錄一個筆者遇到的坑,坑了我一晚上。。。也是很無語。雖然不是頁面跳轉的問題,但是也有一定聯絡,姑且記在這裡。

本來我的專案首頁有兩個tab,需要在其中一個列表頁中點選一個item進入詳情,檢視地圖。然而,不管我怎麼嘗試,文件擼了N遍,都還是沒解決。

先貼出異常

這裡寫圖片描述

上面報錯的aboutUs是首頁的其中另一個tab,只是一個展示頁,沒有操作,所以雖然報錯了,然而我並沒有管。問題出在我跳轉pages/map(詳情的地圖)的時候,提示我如上最後一行的錯誤。

Page[pages/map/map] not found. May be caused by: 1. Forgot to add page route in app.json. 2. Invoking Page() in async task.

按照筆者以前android和後臺的經驗,一直把問題定位到map頁的本身。擼了N久都沒解決。後來心血來潮把aboutUs的異常解決了,發現問題奇蹟般的解決了。

問題出在,aboutUs頁,因為只是一個靜態頁,並沒有操作,所以aboutUs.js是空的,問題就出在這。

在小程式中,即時不需要寫js的程式碼,那js檔案中也必須要加上Page({})