界面跳转和数据传递

2020-12-17  本文已影响0人  GaoXiaoGao

界面跳转有两种方式:
-通过Navgator组件跳转
-通过wx的api跳转

通过Navgator组件

<!-- 1.url 路径可以相对路径,也可以是绝对路径 -->
<navigator url='/pages/detail/detail'>跳到详情页面</navigator>

<!-- 2. open-type="redirect" 会将跳转前的页面关闭 -->
<navigator url='/pages/detail/detail' open-type="redirect">跳到详情页面(redirect)</navigator>
<!-- open-type="switchTab" 可以跳转到tabbar页面 -->
<navigator url='/pages/about/about' open-type="switchTab">跳到详情页面(switchTab)</navigator>

<!-- open-type="reLaunch" 会关闭所有页面 -->
<navigator url='/pages/detail/detail' open-type="reLaunch">跳到详情页面(reLaunch)</navigator>

<!-- open-type="navigateBack" 返回功能,返回到上一页 -->
<navigator open-type="navigateBack">返回</navigator>

<!-- 跳转两次到评论页面,如果要从评论页面直接跳转到首页,设置 delta = 2 -->
<navigator open-type="navigateBack" delta="2">返回首页</navigator>

通过Navgator组件跳转到页面并传递数据

<!-- 通过在路径后面拼接key=value来传递数据 -->
<navigator url='/pages/detail/detail?name=haha&sex=1'>跳到详情页面并传递数据</navigator>

在跳转后的detail页面的onLoad方法中获取传递过来的数据

  onLoad: function (options) {
    // 输出 {name: "haha", sex: "1"}
    console.log(options);
  },

从detail页面返回时,如果想给上层页面返回数据,可以在onUnload()方法中,即页面退出的时候,找到要修改数据的页面,修改页面数据

onUnload: function () {
    //1.全局函数返回所有栈的页面
   const pages =  getCurrentPages();
   //得到home页面对象 pages.length-2是得到当前页面的前一个页面对象
   const home = pages[pages.length-2];

   //2.调用页面对象的方法修改数据
   home.setData({
     title:'我是修改后的标题'
   })
   console.log(pages);
  },

通过wx的api跳转

<button size="mini" bindtap="gotoDetail">跳转到详情页面</button>

gotoDetail(){
    wx.navigateTo({
      // url: '/pages/detail/detail',  
      //以下是传递数据   
      url: '/pages/detail/detail?title=你是谁',

    })

    // wx.redirectTo({
    //   url: '/pages/detail/detail',
    // })
  },

跳转到详情页面,通过代码返回

<button size="mini" bindtap="handleBack">通过按钮调用代码返回</button>

handleBack(){
    //通过代码方式返回
    wx.navigateBack({
      delta: 1,
    })
  },
上一篇下一篇

猜你喜欢

热点阅读