uniapp写app的时候遇到的一个需求,表单可以无限新增,每个表单都要进行表单校验
如图:每点一次右边图标,表单新增一
解决办法:
<view class="" v-for="(item,index) in form" :key="index" >
//rules 校验规则
<u--form :model="item" ref="uForm0" label-width='95' :rules='rules'>
<u-form-item borderBottom label="编号" prop="appearanceNumber">
<u-input type="text" placeholder='请输入' v-model="item.appearanceNumber" />
</u-form-item>
</u--form>
</view>
//校验事件
onSubmit() {
//定义promises 变量接收每一个表单的校验结果,利用Promise.all特性去判断是否所有表单的校验都通过,如果都通过就继续往下执行,又不通过的就提示校验结果
let promises = this.listData.map((item, index) => {
return this.$refs.uForm0[index].validate().then(res => {
return true;
}).catch(res => {
return false;
});
});
Promise.all(promises).then(results => {
const pass = results.every(result => result);
if (pass) {
this.addData()
}
}).catch(error => {});
},
如果有其他更好的方法欢迎评论分享,谢谢大家