赞
踩
- this.$refs['form'].validate((res)=>{
- console.log(res);
- if(res){
- let elCrtUserid = localStorage.getItem('username')
- let elCrtUsername = localStorage.getItem('nickname')
- let elDptName = JSON.stringify(this.form.elDptName)
- addList({...this.form,elCrtUserid,elCrtUsername,elDptName,elDptId}).then(() => {
- this.$modal.msgSuccess('添加成功')
- this.open = false
- this.getList()
- })
- }
- })
逻辑为利用回调函数获取验证结果,判断表单验证结果为true后,执行请求
结果请求没发送成功,于是我打印表单验证结果,结果控制台打印了两次,分别为true、false
看了下源码,找到了问题所在
问题根本原因为源码中try catch,加上我写的回调函数里面的请求报错,于是有了上面的true,false两次打印
- this.$refs['form'].validate().then(res=>{
- console.log(res)
- let elCrtUserid = localStorage.getItem('username')
- let elCrtUsername = localStorage.getItem('nickname')
- let elDptName = JSON.stringify(this.form.elDptName)
- addList({...this.form,elCrtUserid,elCrtUsername,elDptName,elDptId}).then(() => {
- this.$modal.msgSuccess('添加成功')
- this.open = false
- this.getList()
- })
- }).catch(e=>{
- console.log(e);
- //页面滚动到没通过验证的字段
- this.$refs.form.scrollToField(Object.keys(e)[0])
- })
因为validate函数支持回调函数形式,也会返回一个Promise对象,而且catch还会返回没有通过的验证字段
回调函数形式--->表单验证通过,函数执行报错 会执行两次回调函数,分别返回true、false
Promise形式---->表单验证通过,函数执行报错 执行then函数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。