我们项目中在使用van-dialog组件时有个问题是在点击确定或者取消会自动关闭弹出框,当然大多数时候我们需要进行一些异步的判断,在满足指定条件后才希望关闭弹框,那我们处理方法如下,我们要定义一个before-close属性
<van-dialog use-slot title="同意书" async-close before-close="{{beforeClose}}" class="tipDialog" show="{{ isShowToast }}" show-cancel-button bind:cancel="onClose" bind:confirm="continue" confirm-button-text="确定">
</van-dialog>
然后在js代码中做如下处理,data里面定义,在onload函数里初始化,然后在我们定义的确定和取消的方法里通过手动改变isShowToast 的值来关闭弹出框
data: {
beforeClose: {},
},
onLoad: function (options) {
this.setData({
beforeClose: (action) => new Promise((resolve,reject) => {
setTimeout(() => {
// 拦截确认操作
resolve(false);
}, 0);
})
})
}
//同意须知书
continue () {
console.log(1234);
if(this.data.radio=='1'){
this.setData({
isShowToast: false,
})
wx.navigateTo({
url: `/register/pages/registerPayResults/signature?cardNo=${this.data.cardNo}`,
})
}else{
wx.showToast({
title: '请勾选同意须知',
icon:'none'
})
return
}
},
onClose() {
this.setData({
isShowToast: false,
})
},