小程序 · 监听页面返回

返回时弹出提示

如果用户点击dddd则不需要在弹提示框

<view bindtap="zuzhi">dddddddddddddd</view>
data: {
//isAlert:true
// 通过此字段判断是否需要隐藏弹窗,默认true显示,false隐藏
},
onLoad: function (options) {
    wx.enableAlertBeforeUnload({
        message: "返回上页时弹出对话框",
        success: function (res) {
            console.log("成功:", res);
        },
        fail: function (err) {
            console.log("失败:", err);
        },
    });
},
zuzhi:function(){
    //this.setData({
        //isAlert:false
    //})
    wx.disableAlertBeforeUnload() //关闭小程序页面返回询问对话框
    console.log('不弹窗')
},

参考:
wx.enableAlertBeforeUnload

返回跳转到指定页面

onUnload: function () {
	//wx.reLaunch跳到新页面没有返回箭头
	//用wx.redirectTo,wx.navigateTo试试
      wx.reLaunch({
      	//这里url搞相对路径
          url: '../me/order-detail',
      })
  },

返回并刷新上个页面

A列表页跳转到详情页B,从B返回A时需要A实现刷新页面重新获取数据。

在B页面添加获取界面栈的代码

var pages = getCurrentPages();
if (pages.length > 1) {
	var prevPage = pages[pages.length - 2];  //上一个页面
	//更新上一个页面列表数据为空
	prevPage.setData({
	     "list": []
	})
	//返回上一个页面更新数据
	wx.navigateBack({
	     delta: 1,
	     success: function (e) {
	           if (prevPage == undefined || prevPage == null) return;
    	        // prevPage.onLoad();
	            //关键在这里,这里面是触发上个界面
    			prePage.changeData()

	      }
	})
}

在A页面定义刷新页面的事件
注意这个函数并不是在onload里面,应该和onload是同级目录

changeData: function (historyArr) {
	// 刷新事件,根据需求自定义
}

返回及刷新当前页面

if (getCurrentPages().length != 0) {         
     getCurrentPages()[getCurrentPages().length - 1].onLoad()
}

页面返回会数据丢失的问题

小程序的页面层级最多五层,如果超过了五层,第五层的页面会被销毁,当页面回退的时候,上一级的页面需要重新创建,所以原来页面上的数据就会丢失。

所以你可以使用 redirectTo 来代替 navigateTo 关闭当前页面,跳转到应用内的某个页面。

你可能感兴趣的:(微信开发,小程序)