小程序
小游戏
企业微信
微信支付
扫描小程序码分享
这个正确的使用方式是什么。或者 有没有其他的方法可以让dialog关闭前校验
7 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
<!-- 在van-dialog组件中的before-close属性使用要点: -->
<!-- 1. before-close的参数必须是data中的一个函数; -->
<!-- 2. 为了在参数函数中使用this,应在onLoad等中调用setData动态设置该函数的实现; -->
<!-- 3. 不能再配置 bind:close="onDialogClose" bind:confirm="onDialogConfirm" 这两个bind事件了,否则会出现异常行为; -->
原先通过bind:close和bind:confirm绑定的处理函数,一律都要在beforeClose中处理;
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
可以参考这里:https://blog.csdn.net/zszcc/article/details/119669492
亲测 组件模式,需要把beforeClose的方法写在 data中,然后写一个Promise,使用resolve返回 true false,
官方居然官方居然没特别说明下,离谱
1、wxml中
<van-dialog id="scheduledia"
use-slot
title=""
show="{{ show }}"
show-cancel-button
bind:confirm="onConfirm"
before-close="{{onBeforeClose}}"
>
</van-dialog>
2、js中
Page({
data: {
onBeforeClose:(action)=>{
if (action === "cancel"){
return true;
}
},
})
onConfirm设置show为false,即可关闭窗口,否则窗口不会关联
估计官方根本就没有写组件调用模式 阻止关闭的回调,真有你的 有赞
老哥会用了吗 我还是不会使🤣
<van-dialog
title="学习标题"
confirmButtonText='提交'
confirm-button-color='#ff6600'
before-close='onBeforeClose'
bind:close="onClosetit"
theme='round-button'
bind:confirm="confirm"
closeOnClickOverlay="true"
onBeforeClose (action, done) { //点击提交确定按钮前判断
console.log(11111);
title="兑换会员"
show="{{ exchange }}"
closeOnClickOverlay
confirm-button-text="确认兑换"
confirm-button-color="#A45530"
beforeClose="{{beforeClose}}"
onLoad: function(){
const that = this
that.setData({
beforeClose: (action) => new Promise((resolve) => {
setTimeout(() => {
if (action === 'confirm') {
// 网络请求promise,记得resolve(true)
that.onConfirm()
} else {
// 拦截取消操作
resolve(false);
}, 1000);
文档中有示例喔,参见 https://vant-contrib.gitee.io/vant-weapp/#/dialog#yi-bu-guan-bi
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
<!-- 在van-dialog组件中的before-close属性使用要点: -->
<!-- 1. before-close的参数必须是data中的一个函数; -->
<!-- 2. 为了在参数函数中使用this,应在onLoad等中调用setData动态设置该函数的实现; -->
<!-- 3. 不能再配置 bind:close="onDialogClose" bind:confirm="onDialogConfirm" 这两个bind事件了,否则会出现异常行为; -->
原先通过bind:close和bind:confirm绑定的处理函数,一律都要在beforeClose中处理;
可以参考这里:https://blog.csdn.net/zszcc/article/details/119669492
亲测 组件模式,需要把beforeClose的方法写在 data中,然后写一个Promise,使用resolve返回 true false,
官方居然官方居然没特别说明下,离谱
1、wxml中
<van-dialog id="scheduledia"
use-slot
title=""
show="{{ show }}"
show-cancel-button
bind:confirm="onConfirm"
before-close="{{onBeforeClose}}"
>
</van-dialog>
2、js中
Page({
data: {
onBeforeClose:(action)=>{
if (action === "cancel"){
return true;
}
}
},
})
onConfirm设置show为false,即可关闭窗口,否则窗口不会关联
估计官方根本就没有写组件调用模式 阻止关闭的回调,真有你的 有赞
老哥会用了吗 我还是不会使🤣
<van-dialog
use-slot
title="学习标题"
confirmButtonText='提交'
confirm-button-color='#ff6600'
before-close='onBeforeClose'
bind:close="onClosetit"
theme='round-button'
bind:confirm="confirm"
show="{{ show }}"
closeOnClickOverlay="true"
>
onBeforeClose (action, done) { //点击提交确定按钮前判断
console.log(11111);
},
<van-dialog
use-slot
title="兑换会员"
show="{{ exchange }}"
closeOnClickOverlay
confirm-button-text="确认兑换"
bind:confirm="onConfirm"
confirm-button-color="#A45530"
beforeClose="{{beforeClose}}"
>
</van-dialog>
onLoad: function(){
const that = this
that.setData({
beforeClose: (action) => new Promise((resolve) => {
setTimeout(() => {
if (action === 'confirm') {
// 网络请求promise,记得resolve(true)
that.onConfirm()
} else {
// 拦截取消操作
resolve(false);
}
}, 1000);
})
})
}
文档中有示例喔,参见 https://vant-contrib.gitee.io/vant-weapp/#/dialog#yi-bu-guan-bi