抖音小程序页面链接/导航

一、navigator

​
<navigator url="" open-type="" hover-class=""></navigator>

/*

open-type属性   

navigate 保留当前页面,跳转到应用内的某个页面,但是不能跳转到 tabBar 页面。 对应 tt.navigateTo
 
redirect 关闭当前页面,跳转到应用内的某个页面,不能跳转到 tabBar 页面。  对应 tt.redirectTo

switchTab 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,目标 tabBar 页面需要在 app.json 中定义。  对应 tt.switchTab

navigateBack 关闭当前页面,返回上一页面或多级页面。 对应 tt.navigateBack

reLaunch  关闭所有页面,打开应用内的某个页面。 对应 tt.reLaunch
*/

​
hover-class 默认值为 navigator-hover
{
  background-color: rgba(0, 0, 0, 0.1);
  opacity: 0.7;
}

示例:

  

二、页面导航

   (1)tt.navigateTo

            保留当前页面,跳转到应用内的某个页面,但是不能跳转到 tabBar 页面,使用 tt.navigateBack 可以返回到原页面。

    ttml

<button type="primary" bindtap="onItemClick">navigateTo跳转页面</button>


    ttss

.title {
    background-color: white;
    padding: 20rpx 30rpx;
}  
.intro{
    color: gray;
    padding: 20rpx 30rpx;
}

javascript

​
Page({
  data: {
    length: 0
  },
  async onLoad(){    // 加载数据调用
    const pages = await this.getPages();
    this.setData({
      length: pages.length
    })
  },
  getPages() {   // 获取数据
    return new Promise((resolve, reject) => {
      resolve(getCurrentPages());
    })
  },
  onItemClick() {  // 通过数据对应跳转  一般通过每条数据的id 进行跳转
    tt.navigateTo({
      url: `tt-navigate-page?params=navigateTo`, //demo示例,一般路径形式:/pages/detail/detail?key=${value}
      success(res) {
        console.log(res);
      },
      fail(res) {
        console.log("navigateTo调用失败");
      },
    });
  },
})

​

示例:

 (2)tt.redirectTo

            redirectTo 跳转页面后将关闭当前页面,跳转到应用内的某个页面,不能跳转到 tabBar 页面。

Page({
  data: {
    length: 0
  },
  async onLoad(option) {
    const pages = await this.getPages();
    this.setData({
      length: pages.length
    })
  },
  getPages() {
    return new Promise((resolve, reject) => {
      resolve(getCurrentPages());
    })
  },
  onItemClick() {
    tt.redirectTo({
      url: 'tt-redirect-page?params=redirectTo',
      success(res) {
        console.log('success执行了', res);
      },
      fail(err) {
        console.log('fail执行了', err);
      },
      complete(res) {
        console.log('complete执行了', res);
      }
    });
  }
})
 (3)tt.switchTab

               跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,目标 tabBar 页面需要在 app.json 中定义。

Page({
  toIndexTab() {
    tt.showModal({
      title: "跳转到 tabBar 页面",
      content: "跳转到 tabBar 页面会关闭此页面,无法返回,是否确定跳转?",
      success(res) {
        console.log("用户点击了" + (res.confirm ? "确定" : "取消"));
        if(res.confirm){
          tt.switchTab({
            url: '/pages/API/index',
            success(res) {
              console.log('success执行了', res);
            },
            fail(err) {
              console.log('fail执行了', err);
            },
            complete(res) {
              console.log('complete执行了', res);
            }
          });
        }
      },
      fail(err) {
        console.log(`showModal 调用失败`, err);
      },
    });
  }
})
(4)tt.navigateBack

               关闭当前页面,返回上一页面或多级页面。

    ttml

<view class="container">
  <view class="title">当前页面的路由层级:{{length}}</view>
  <view class="intro">navigateBack 可以返回上一页面或多级页面,但第一个页面不能使用 navigateBack。</view>
  <view class="btn-area">
    <button type="primary" bindtap="onItemClick">navigateTo跳转至navigateBack页面</button>
    <button type="primary" bindtap="navigateBack">navigateBack返回上一页</button>
  </view>
</view>

   javascript

Page({
  data: {
    length: 0
  },
  async onLoad(options) {
    const pages = await this.getPages();
    this.setData({
      length: pages.length
    })
  },
  getPages() {
    return new Promise((resolve, reject) => {
      resolve(getCurrentPages());
    })
  },
  navigateBack() {
    tt.navigateBack({
      delta: 1,
      success(res) {
        console.log('success执行了', res);
      },
      fail(err) {
        console.log('fail执行了', err);
        tt.showModal({
          title:"返回上一页失败",
          content: "第一个页面不能 navigate back",
          showCancel:false
        });
      },
      complete(res) {
        console.log('complete执行了', res);
      }
    });
  },
  onItemClick() {
    tt.navigateTo({
      url: `tt-navigate-page?params=navigateBack`, //demo示例,一般路径形式:/pages/detail/detail?key=${value}
      success(res) {
        console.log(res);
      },
      fail(res) {
        console.log("navigateTo调用失败",res);
      },
    });
  },
})

    示例:

           

(4)tt.reLaunch

            关闭所有页面,打开应用内的某个页面。

  ttml

<view class="container">
  <view class="title">当前页面的路由层级:{{length}}</view>
  <view class="intro">reLaunch 跳转页面后将关闭所有页面,打开应用内的某个页面。</view>
  <view class="btn-area">
    <button type="primary" bindtap="toRoute">reLaunch跳转页面</button>
  </view>
</view>

javascript

Page({
  data: {
    length: 0
  },
  async onLoad() {
    const pages = await this.getPages();
    this.setData({
      length: pages.length
    })
  },
  getPages() {
    return new Promise((resolve, reject) => {
      resolve(getCurrentPages());
    })
  },
  toRoute() {
    tt.reLaunch({
      url: 'tt-launch-page?param=reLaunch',
      success(res) {
        console.log('success执行了', res);
      },
      fail(err) {
        console.log('fail执行了', err);
      },
      complete(res) {
        console.log('complete执行了', res);
      }
    });
  }
})

 具体参数方法清参考 抖音开发平台 -- 》开发 --》JS API --》页面导航

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值