小程序-视图与逻辑
一、页面导航
1、什么是页面导航
页面导航批的是页面之间的相互跳转。例如,浏览器中实现页面导航的方式有如下两种:
1)<a>链接
2) location.href
2、小程序中实现页面导航的两种方式
1)声明式导航
- 在页面上声明一个<navigator>导航组件
- 通过点击<navigator>组件实现页面跳转
2)编程式导航
- 调用小程序的导航API,实现页面的跳转
2.1、声明式导航
2.1.1导航到tabBar页面
tabBar页面指的是被配置为tabBar的页面。
在使用<navigator>组件跳转到指定的tabBar页面时,需要指定url属性和open-type属性,其中:
- url表示要跳转的页面的地址,必须以/开头
- open-type表示跳转的方式,必须为switchTab
<!–pages/home/home.wxml–>
2.1.2导航到非tabBar页面
非tabBar页面指的是没有被配置为tabBar的页面。
在使用<navigator>组件跳转到普通的非tabBar页面时,需要指定url属性和open-type属性,其中:
- url表示要跳转的页面的地址,必须以/开头
- open-type表示跳转的方式,必须为navigate
<!–pages/home/home.wxml–>
2.1.3后退导航
如果要后退到上一页面或多级页面,则需要指定open-type属性和delta属性,其中:
- open-type的值必须是navigateBack,表示要进行后退导航
- delta的值必须是数字,表示要后退的层级
<!–pages/home/home.wxml–>
注意:为了简便,如果只是后退到上一页面,则可以省略delta属性,因为其默认值就是1。
2.2编程式导航
2.2.1导航到tabBar页面
<!--编程式导航--> <button bindtap="gotoMessage">跳转到message页面</button>
/**编程式导航跳转到tabBar页面*/ gotoMessage(){ wx.switchTab({ url: '/pages/message/message', }) },
2.2.2导航到非tabBar页面
2.2.3后退导航
2.3、导航传参
2.3.1声明式导航传参
navigator组件的url属性用来指定将要跳转到的页面的路径。同时,路径的后面还可以携带参数:
- 参数与路径之间使用?分隔
- 参数键与参数值用=相连
- 不同参数用&分隔
2.3.2编程式导航传参
2.3.3在onLoad中接收导航参数
/** * 页面的初始数据 */ data: { query:{} }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { console.log(options) this.setData({ query:options }) },
注:因options的作用域只在onLoad中,故在data:{}中定义query:{}空数组,再用this.setData()重新给query赋值,使得传递过来的参数全局可用。