前言
上一篇简单的了解了小程序的数据绑定,这一回学习小程序的页面路由。
页面路由
小程序中,所有页面的路由都有框架管理,框架以栈的形式维护当前的所有页面。
1 路由方式
路由的触发可以调用API,也可以使用组件 <navigator />
API方式:
- 打开新页面:wx.navigateTo
- 页面重定向:wx.redirectTo
- 页面返回:wx.navigateBack
- Tab切换:wx.switchTab
- 重启动:wx.reLaunch
组件方式:
- <navigator open-type="navigateTo ">
- 其他同理
2 路由实例 - API跳转
1)打开app.json,在pages最上新增页面:“pages/first/first”,作为主页,再新增 “pages/second/second”,保存
2)打开first.js,新增函数
secondPage() {
wx.navigateTo({
url: "/pages/second/second",
success: result => {},
fail: () => {},
complete: () => {}
});
}
3)打开first.wxml,绑定事件secondPage,点击后即可跳转页面
<text bindtap="secondPage">前往第二个页面</text>
4)如果要在页面间传递参数,在url末尾使用 ?参数名=*,参数之间用 &
data: {
pageIndex: 1,
blogName: "我只会瞎蒙"
},
//...
secondPage() {
wx.navigateTo({
url: "/pages/second/second?pageIndex=" + this.data.pageIndex + "&blogName=" + this.data.blogName,
success: result => {},
fail: () => {},
complete: () => {}
});
}
5)打开second.js,在onLoad函数中加载参数
onLoad: function (options) {
this.setData({
pageIndex: options.pageIndex,
blogName: options.blogName
});
},
6)打开second.wxml
<text>从第{{pageIndex}}页跳转过来。大家好,我是{{blogName}}</text>
7)跳转后效果
8)从第二页返回第一页,打开second.js,添加函数backPage
backPage() {
wx.navigateBack({
delta: 1
});
}
9)在second.wxml中绑定事件
<text bindtap="backPage">从第{{pageIndex}}页跳转过来。大家好,我是{{blogName}}</text>
PS: navigateBack的参数delta默认1,不填也可以,如果大于当前页面数,将直接返回首页。
3 路由实例 - 组件跳转
<view>
<navigator url="/pages/second/second?pageIndex={{pageIndex}}&blogName={{blogName}}">组件方式跳转到第二个页面</navigator>
</view>
4 路由实例 - Tab切换
打开app.json,新增3个标签页, “pages/tab/tab1”、“pages/tab/tab2”、“pages/tab/tab3”,tab1作为主页,然后配置tabbar
"tabBar": {
"color": "#707070",
"selectedColor": "#2DBB55",
"backgroundColor": "#FAFAFA",
"list": [
{
"selectedIconPath": "image/main_select.png",
"iconPath": "image/main.png",
"pagePath": "pages/tab/tab1",
"text": "首页"
},
{
"selectedIconPath": "image/depart_select.png",
"iconPath": "image/depart.png",
"pagePath": "pages/tab/tab2",
"text": "功能大全"
},
{
"selectedIconPath": "image/mine_select.png",
"iconPath": "image/mine.png",
"pagePath": "pages/tab/tab3",
"text": "我的"
}
]
},
到这里,完成配置,效果如下: