当前位置: 首页 > backend >正文

element-plus 表单校验-表单中包含多子组件表单的校验

记录一下最近项目中一个复杂表单提交的实现方法,表单页面需要填写字段接近上百个,当时不想全部写在一个页面,于是拆分成了几个子表单组件。在父组件调用子组件方法,同时要拿到所有子组件表单的值,然后表单提交

父组件

<template><el-form><FormA ref="refA" /><FormB ref="refB" /><FormC ref="refC" /><el-form-item><el-button type="primary" @click="submitForm(formRef)">提交 </el-button><el-button @click="resetForm(formRef)">重置</el-button></el-form-item></el-form>
</template>
<script setup>
import FormA from "./modules/formA.vue";
import FormB from "./modules/formB.vue";
import FormC from "./modules/formC.vue";
const data = reactive({formData: {},rules: {},
});
const { formData, rules } = toRefs(data);
const formRef = ref(null);
const refA = ref(null);
const refB = ref(null);
const refC = ref(null);
const submitForm = async () => {let formDataList = await Promise.all([refA.value.validateForm(),refB.value.validateForm(),refC.value.validateForm(),]);const mergedFormData = formDataList.reduce((prev, current) => ({ ...prev, ...current }),{});//写提交请求逻辑
};
</script>

子组件A

<template><div><el-form ref="formRef" :model="formData" :rules="rules"><el-form-item class="flex" label="账号" prop="userName"><el-input placeholder="请输入" v-model="formData.userName" /></el-form-item></el-form></div>
</template><script setup>
const data = reactive({formData: {userName: "",},rules: { userName: [{ required: true, message: "请输入" }] },
});
const { formData, rules } = toRefs(data);
const formRef = ref(null);
const validateForm = () => {return new Promise((resolve, reject) => {formRef.value.validate((valid) => {if (valid) {return resolve(formData.value);} else {reject();}});});
};
defineExpose({validateForm,
});
</script>
http://www.xdnf.cn/news/20296.html

相关文章:

  • (数据结构)哈希碰撞:线性探测法 vs 拉链法
  • 基于区块链的IoMT跨医院认证系统:Python实践分析
  • Flink中的事件时间、处理时间和摄入时间
  • Joplin-解决 Node.js 中 “digital envelope routines::unsupported“ 错误
  • 自旋锁/互斥锁 设备树 iic驱动总线 day66 67 68
  • 输入2.2V~16V 最高输出20V2.5A DCDC升压芯片MT3608L
  • 计算机网络:网络设备在OSI七层模型中的工作层次和传输协议
  • 鸿蒙 BLE 蓝牙智能设备固件升级之DFU升级方式(Nordic芯片)
  • macbook intel 打开cursor会闪退
  • MySQL集群高可用架构(MHA高可用架构)
  • Process Explorer进阶(第三章3.3):深入理解进程详情
  • [Windows] AdGuard.v7.21.5089.0 中文直装电脑版
  • cds序列转换为pepperl脚本详细解读及使用
  • Python多线程编程全面指南
  • web自动化测试
  • Elasticsearch优化从入门到精通
  • 线代:排列与逆序
  • 从机器学习的角度实现 excel 中趋势线:揭秘梯度下降过程
  • PageHelper的使用及底层原理
  • WordPress如何绑定多个域名 WordPress实现多域名访问
  • 新的打卡方式
  • GPIO介绍
  • java接口和抽象类有何区别
  • ICPC 2023 Nanjing R L 题 Elevator
  • 用Android studio运行海外极光推送engagelab安卓的SDK打apk安装包
  • Ribbon和LoadBalance-负载均衡
  • 从Java全栈到前端框架:一次真实面试的深度复盘
  • 验证平台中所有的组件应该派生自UVM中的类
  • 设计艺术~缓存结构设计
  • 【Go项目基建】GORM框架实现SQL校验拦截器(完整源码+详解)