开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
基础 api
基础
应用级事件
界面
导航栏
tabbar
路由
eventchannel
交互反馈
下拉刷新
联系人
选择城市
选择日期
动画
画布
地图
计算路径
键盘
滚动
节点查询
选项选择器
级联选择
设置窗口背景
设置页面是否支持下拉
字体
跳转
多媒体
缓存
文件
位置
网络
设备
worker
数据安全
分享
收藏
自定义通用菜单
更新管理
web-view组件控制
升级支付宝最新版本
隐私信息授权
小程序广告
开放能力 api
开发 > api > 基础 api > 界面 > 路由 > my.navigateback
评论 (1)
收藏
我的文档
设置

my.navigateback(object object)

支小宝客户端 支持

安诊儿客户端 支持

主体: 企业支付宝小程序个人支付宝小程序

相关文档: 路由使用须知

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

可通过 getcurrentpages() 获取当前的页面栈信息,决定需要返回几层。

使用此 api 前,建议先阅读 路由使用须知

object object

查看示例

属性 类型 默认值 必填 描述
delta number 1

回退的页面数。如果 delta 大于等于打开的页面栈深度,则返回到栈底页面

success function -

调用成功的回调函数

fail function -

调用失败的回调函数

complete function -

调用结束的回调函数(调用成功、失败都会执行)

fail 回调的参数为 object,error 属性为错误码,errormessage 属性为错误消息。

错误码 错误消息 凯发app官方网站的解决方案
'"already top of navigation"' 当前页面栈的深度为 1,无法再回退

避免在最后一个页面上调用。可使用 getcurrentpages() 获取当前页面栈深度,提前判断。

代码示例
page({
    navigateback() {
      my.navigateback(); // 返回上一页
    },
    navigatebackdelta() {
      my.navigateback({ 
        delta: 2 
      }); // 返回上一页的上一页
    },
});

q:使用 my.navigateback 返回,如何通知所到达的页面刷新?是否可以通过监听返回按钮点击或页面返回事件达到这一目的?

a:

使用 my.navigateback 返回所到达的页面并不会自动刷新。当前页面可以通过 onback 监听到导航栏上返回按钮(以及 android 系统返回键)被点击,但不支持监听左滑手势、api 调用等其他方式导致的返回。但无论哪种返回方式,当前页面关闭前都会触发 onunload,返回到达的页面均会触发 onshow ,故可利用这个机制进行必要的处理。注意 onshow 事情并不一定是通过返回触发,需要自行判断。一种实现方式如下:

// 当前页面
page({
  onsomebuttontap() {
    // 在全局数据中存信息,带时间戳
    getapp().globaldata.navigatebackpayload = this._navigatebackpayload = {
      time: date.now(),
      message: 'by my.navigateback',
    };
    // 调用接口返回
    my.navigateback();
  },
  onunload() {
    if (!this._navigatebackpayload) {
      // 其他方式离开页面,也存一条
      getapp().globaldata.navigatebackpayload = {
        time: date.now(),
        message: 'by other means',
      };
    }
  },
});
// 返回的目标页面
page({
  onshow(options) {
    // 从全局数据中取信息
    const { globaldata } = getapp();
    const { time, message } = globaldata.navigatebackpayload || {};
    // 比较时间戳,推测是否为有效数据。1000ms 只是个粗糙的经验值,可调整
    if (time && date.now() - time < 1000) {
      console.log('do something with message: '   message);
    }
    // 清除信息,避免重复处理
    globaldata.navigatebackpayload = null;
  },
});

q:能否使用 my.navigateback 退出小程序?

a:

my.navigateback 不能退出小程序,在最后一个页面调用会触发 fail 回调。退出小程序请使用 my.exitminiprogram(请注意该 api 的调用要由用户主动触发才能成功)。

内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图