当做业务需求的时候,同时遇到一个 dialog 有两个表单,在提交的时候就要同时对两个表单进行表单校验,我刚开始就想到了验证嵌套,虽然也能实现,不过会有先后顺序的问题,不能同时进行校验,后来经过百度才发现 promise.all 方法可以实现我们的需求,直接上代码
1. 验证嵌套
this.$refs['form'].validate((valid) => {
if (valid) {
this.$refs['table'].validate((valid) => {
if (valid) {
this.submit()
}
})
}
})
2. promise.all
checkForm (formName) {
return new Promise((resolve, reject) => {
this.$refs[formName].validate(valid => {
if (valid) {
resolve()
}
})
})
}
let checkList = [this.checkForm('writeInfo'), this.checkForm('form')]
Promise.all(checkList).then(() => {
this.submit()
}).catch(() => {
return false
})