kysin
kysin
  • 发布:2020-06-21 18:12
  • 更新:2020-06-22 11:45
  • 阅读:644

【报Bug】onBackPress函数问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 2.7.14

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: 米9

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:
onBackPress() {  
            console.log(this.isConfirm);  
            if(this.isConfirm == false){  
                uni.showModal({  
                    content: '数据尚未保存,你确定要返回吗?',  
                    success: function (res) {  
                        if (res.confirm) {  
                            this.isConfirm = true  
                            console.log(`点击确认按钮`);  
                            console.log(this.isConfirm);  
                            uni.navigateBack({  
                                 delta:1  
                                })  
                        }   
                    }  
                })  
                return true  
            }else{  
                return false  
            }  
        },

uni.navigateBack会再走一次onBackPress钩子,但是上次修改的isConfirm不应该自动发生变化

预期结果:

uni.navigateBack会再走一次onBackPress钩子,但是上次修改的isConfirm应该为我修改后的true,从而实现返回

实际结果:

isConfirm异常

bug描述:

复写返回逻辑,点击返回的时候弹出确认弹窗

data() {  
    return {  
       isConfirm:false, //处理返回逻辑  
  }  
}  
methods:{  
     onBackPress() {  
            console.log(this.isConfirm);  
            if(this.isConfirm == false){  
                uni.showModal({  
                    content: '数据尚未保存,你确定要返回吗?',  
                    success: function (res) {  
                        if (res.confirm) {  
                            this.isConfirm = true  
                            console.log(`点击确认按钮`);  
                            console.log(this.isConfirm);  
                            uni.navigateBack({  
                                 delta:1  
                                })  
                        }   
                    }  
                })  
                return true  
            }else{  
                return false  
            }  
        }  
}

这样写了在执行uni.navigateBack的时候this.isConfirm = true会自动变成false,问题是我根本没写过这个this.isConfirm = true的逻辑

2020-06-21 18:12 负责人:DCloud_UNI_GSQ 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

虽然没看明白你说的问题,但是看到你 showModal 回调方法中 this 的指向不对。

  • kysin (作者)

    一语中的,忘了用箭头函数了,已经解决,谢谢

    2020-06-22 13:57

艺宝皮皮

艺宝皮皮

showModal 回调方法中 不能用this 在model外定义一个 let that=this 然后在回调里用that.xxx

  • kysin (作者)

    忘了用箭头函数了,已经解决啦,谢谢

    2020-06-22 13:57

该问题目前已经被锁定, 无法添加新回复