需求场景
当在一个表单页面 填写了很多数据,或者编辑页面数据发生变动之后,这时候返回上一个页面需要提醒用户是否返回的弹框
实现方法一(ios会存在一定的问题)
- 在onLoad生命周期里 注册
wx.enableAlertBeforeUnload({message: "您内容已更新,还没保存,确定要退出吗?",success: function (res) {},fail: function (err) {console.log("失败:", err);},});
- 当你修改数据之后 又把数据还原 此时数据是没有发生改变的 这时候返回上一个页面是不需要阻止用户出现确定弹框的,在你修改数据的判断是否与老数据一致的逻辑中添加如下代码 注销 刚才在onload 生命周期里面的弹框事件,此时返回上一个页面是不会阻止用户
wx.disableAlertBeforeUnload()
方法二
- 1.在编辑页面添加如下代码
<view class="" v-if="showPage"><page-container :show="showPage " :overlay="false" @beforeleave="beforeleave"></page-container></view>
-
- 在data里面 定义showPage 默认为false
-
- 在你判断数据是否发生改变的逻辑中 如果需要提醒用户 this.showPage = true
-
- beforeleave回调 写在methods里
beforeleave() {this.showPage = falseuni.showModal({title: 内容发生改变,确定要退出吗?,success: (e) => {if (e.confirm) {uni.navigateBack(1)} else {//点击取消之后再次开启弹框阻止用户this.showPage = true}},})},