后台管理系统很多时候有同时提交多个表单的需求,需要用到new promise
比如我们有ABCD四个表单
<el-form ref="formA"></el-form>
<el-form ref="formB"></el-form>
<el-form ref="formC"></el-form>
<el-form ref="formD"></el-form>
export default{
data(){
resultArr:[],//接受验证返回结果数组
formArr:[],//存放表单ref数组
},
methods:{
//封装验证函数
checkForm(formName){
let _self=this;
let result = new Promise(function(resolve, reject) {
_self.$refs[formName].validate((valid) => {
if (valid) {
resolve();
} else { reject() }
})
})
_self.resultArr.push(result) //push 得到promise的结果
},
submit(){
let _self=this;
_self.formArr.forEach(item => { //根据表单的ref校验
_self.checkForm(item)
})
//resultArr数组的值必须是promise对象才能使用Promise.all,在checkForm做了这一步
Promise.all(_self.resultArr).then(function() { //都通过了
alert('所有表单验证通过')
}).catch(function() {
console.log("err");
});
}
}
}