导航API

本文编辑: 心城 心城浏览 4036 版权所有,严禁转载

接口说明:

对页面的切换的操作,实现页面之间的跳转

接口 说明
wx.navigateTo(OBJECT) 保留当前页面,跳转到应用内的某个页面,使用wx.navigateBack可以返回到原页面
wx.redirectTo(OBJECT) 关闭当前页面,跳转到应用内的某个页面
wx.switchTab(OBJECT) 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.navigateBack(OBJECT) 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages()) 获取当前的页面栈,决定需要返回几层

接口用法:

 wx.navigateTo(OBJECT),对页面的跳转,保留当前页,但是为了不让用户在使用小程序时造成困扰,腾讯规定页面路径只能是五层,请尽量避免多层级的交互方式。
wx.navigateBack(OBJECT),关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层

【图片】

【代码】

wxml

<!--index-->
<view class="container">
<button bindtap="navigateTo">跳转到新界面</button>
</view>
<!-- navigator.wxml -->
<view> 点击左上角返回回到之前页面 </view>
<view>跳转携带的数据:{{id}}</view>
<button bindtap="back">返回界面</button>

js

//index
navigateTo:function(){
    wx.navigateTo({
      url: 'navigate?id=1'
    })
  }
//navigator
back:function(){
    console.info(getCurrentPages() );
    wx.navigateBack({
    delta: 1
  })
  }

wx.redirectTo(OBJECT),关闭当前页面,跳转到应用内的某个页面
【图片】

【代码】

wxml

<!--index-->
<view class="container">
<button bindtap="navigateTo">跳转到新界面</button>
<button bindtap="redirectTo">跳转到新界面redirectTo</button>
</view>
<!-- navigator.wxml -->
<view> 左上角并没有返回的按钮 </view>
<view>跳转携带的数据:{{id}}</view>
<button bindtap="back">返回界面</button>

js

//index
redirectTo:function(){
  wx.redirectTo({
     url: 'navigate?id=1'
  })
  }

wx.switchTab(OBJECT),跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
【图片】

【代码】

wxml

<!--index-->
<view class="container">
<button bindtap="navigateTo">跳转到新界面</button>
<button bindtap="redirectTo">跳转到新界面redirectTo</button>
</view>
<!-- navigator.wxml -->
<button bindtap="toTabBar">返回TabBar</button>

js

//index
redirectTo:function(){
  wx.redirectTo({
     url: 'navigate?id=1'
  })
  }
//navigator
toTabBar :function(){
   wx.switchTab({
    url: '/pages/index/index'//一定注意要在前面加上/
  })
  }

json

{
  "pages":[
    "pages/index/index",
    "pages/index/navigate",
    "pages/index/redirect",
    "pages/index/index2"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": " navigator测试",
    "navigationBarTextStyle":"black"
  },
    "tabBar": {
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首页"
    }, {
      "pagePath": "pages/index/index2",
      "text": "index2"
    }]
  }
}

主要方法:

【wx.navigateTo(OBJECT)】:【跳转到另一页面并保留当前的页面】

【方法内容描述】

参数 类型 必填 描述
url String 需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)
//跳转页面
wx.navigateTo({
  url: 'test?id=1'
})
//test 跳转到的页面
Page({
  onLoad: function(option){
    console.log(option.id)
  }
})

【wx.redirectTo(OBJECT)】:【关闭当前页面,跳转到应用内的某个页面】

【方法内容描述】

参数 类型 必填 描述
url String 需要跳转的应用内非 tabBar 的页面的路径,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)
wx.redirectTo({
  url: 'test?id=1'
})

【wx.switchTab(OBJECT)】:【跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面】

【方法内容描述】

参数 类型 必填 描述
url String 需要跳转的 tabBar 页面的路径(需在 app.json 的 tabBar 字段定义的页面),路径后不能带参数,特别提醒,请在url前面加上/
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)
{
  "tabBar": {
    "list": [{
      "pagePath": "index",
      "text": "首页"
    },{
      "pagePath": "other",
      "text": "其他"
    }]
  }
}
wx.switchTab({
  url: '/index'
})

特别提醒,请在url前面加上/

【wx.navigateBack(OBJECT)】:【关闭当前页面,返回上一页面或多级页面】

【方法内容描述】

参数 类型 默认值 说明
delta Number 1 返回的页面数,如果 delta 大于现有页面数,则返回到首页。
// 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码

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

// 此处是B页面
wx.navigateTo({
  url: 'C?id=1'
})

// 在C页面内 navigateBack,将返回A页面
wx.navigateBack({
  delta: 2
})

特别提示:
wx.navigateTo 和 wx.redirectTo 不允许跳转到 tabbar 页面,只能用 wx.switchTab 跳转到 tabbar 页面

如有技术问题或对本文有反馈,请加入QQ群:
微信小程序实战5营: 微信小程序Club实战5营