小程序-视图与逻辑

一、页面导航

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页面

<!–pages/home/home.wxml–>
<!--编程式导航-->
<button bindtap="gotoMessage">跳转到message页面</button>
// pages/home/home.js
 /**编程式导航跳转到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赋值,使得传递过来的参数全局可用。

分类: 小程序