vant-ui组件调用Dialog弹窗异步关闭操作


Posted in Javascript onNovember 04, 2020

需求描述:

需求描述:官方文档又是组件调用方式,又是函数调用方式。

我就需要一个很简单的:点击操作弹窗显示后,我填写一个表单,表单校验通过后,再调用API接口,返回成功后,关闭弹窗。

一个很简单的东西,element-ui用的很方便,在这里就懵比了,刚开始做的,弹窗关闭了,才返回异步接口调用的结果。网速慢点,用起来真的很不好。

正确的解决方式一:

<van-dialog
   v-model="showDialog"
   title="提示"
   show-cancel-button
   :before-close="onBeforeClose"
   @confirm="handleConfirm"
  >
   <van-form ref="myform">
    <van-field
     v-model="attendanceName"
     name="name"
     label="名称"
     placeholder="请输入名称"
     :rules="[
      { required: true, message: '请填写名称' }
     ]"
    />
   </van-form>
  </van-dialog>

关键点,showDialog控制显示隐藏,before-close控制关闭前的回调,confirm 是弹窗点击确认按钮触发的事件,ref拿到form实例。

刚开始我把表单校验放在before-close,实现的结果不对。

onBeforeClose(action, done) {
   if (action === "confirm") {
    return done(false);
   } else {
    // 重置表单校验
    this.$refs["myform"].resetValidation("name");
    this.name= undefined;
    return done();
   }
  },

我把onBeforeClose中的,点击确认confirm的操作,done(false),阻止弹窗关闭

把表单校验和异步接口请求成功后关闭弹窗的,都放到handleConfirm操作中,

// 实例弹窗确认
  handleConfirm() {
   this.$refs["myform"]
    .validate()
    .then(() => {
     let para = {
      data: {
       name: this.name,
      },
     };
     ajaxAdd(para).then(() => {
      this.showDialog = false; // 在这里手动的关闭弹窗
      this.$toast.success("新增成功");
      this.name= undefined;
      this.onRefresh();
     });
    })
    .catch(() => {});
  },

这样修改后,点击取消,可以直接关闭。点击确认,需要先表单校验,校验成功后,才会去发送ajax异步请求,请求接口返回成功后,才会关闭弹窗。

补充知识:关于Vant dialog 异步弹出框使用记录

vant-ui组件调用Dialog弹窗异步关闭操作

这个是官方文档,啥说明没有就有个解释

vant-ui组件调用Dialog弹窗异步关闭操作

这是人干的的事嘛。。。

具体来说下怎么在vue中使用它

vant-ui组件调用Dialog弹窗异步关闭操作

以上这篇vant-ui组件调用Dialog弹窗异步关闭操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS判断字符串包含的方法
May 05 Javascript
javascript中Date format(js日期格式化)方法小结
Dec 17 Javascript
详解javascript实现自定义事件
Jan 19 Javascript
Jquery实现$.fn.extend和$.extend函数
Apr 14 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
May 18 Javascript
jQuery 3.0十大新特性最终版发布
Jul 14 Javascript
JavaScript无阻塞加载和defer、async详解
Feb 26 Javascript
在angular 6中使用 less 的实例代码
May 13 Javascript
JS Ajax请求会话过期处理问题解决方法分析
Nov 16 Javascript
vue 封装 Adminlte3组件的实现
Mar 18 Javascript
JavaScript经典案例之简易计算器
Aug 24 Javascript
Vue3为什么这么快
Sep 23 Javascript
通过实例了解Render Props回调地狱解决方案
Nov 04 #Javascript
vant中的toast层级改变操作
Nov 04 #Javascript
vant中的toast轻提示实现代码
Nov 04 #Javascript
JavaScript快速调试的两个技巧
Nov 04 #Javascript
如何实现小程序与小程序之间的跳转
Nov 04 #Javascript
Vant 中的Toast设置全局的延迟时间操作
Nov 04 #Javascript
vue 使用vant插件做tabs切换和无限加载功能的实现
Nov 04 #Javascript
You might like
memcache一致性hash的php实现方法
2015/03/05 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
深入理解js promise chain
2016/05/05 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
JS实现li标签的删除
2019/04/12 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
python和JavaScript哪个容易上手
2020/06/23 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
PHP笔试题
2012/02/22 面试题
歌颂祖国的演讲稿
2014/05/04 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
会计专业求职信范文
2015/03/19 职场文书
2015年学校德育工作总结
2015/04/22 职场文书
小学运动会前导词
2015/07/20 职场文书
MySQL锁机制
2021/04/05 MySQL
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
微信小程序基础教程之echart的使用
2021/06/01 Javascript
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle