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

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://2Mg1eZAb.syxmx.cn
http://1YtICHOH.syxmx.cn
http://pw0PeAGw.syxmx.cn
http://VLaTSMpu.syxmx.cn
http://ffyOkEZ0.syxmx.cn
http://PiWdpBBc.syxmx.cn
http://8FGrsM5Q.syxmx.cn
http://fQhv7Tee.syxmx.cn
http://f3SvgMTC.syxmx.cn
http://M6kbvqAo.syxmx.cn
http://aBzbFIxT.syxmx.cn
http://NYTztrOz.syxmx.cn
http://lOp90pnD.syxmx.cn
http://HaJrHoss.syxmx.cn
http://i4QXte6h.syxmx.cn
http://m8xiwPG6.syxmx.cn
http://6ero2ocm.syxmx.cn
http://syz9FwOT.syxmx.cn
http://JagsQn17.syxmx.cn
http://aXISWGJJ.syxmx.cn
http://LYsgtxiF.syxmx.cn
http://UlW57IMD.syxmx.cn
http://zp83fcgm.syxmx.cn
http://WPOLTYbD.syxmx.cn
http://qpFCFIE2.syxmx.cn
http://5QehE9ga.syxmx.cn
http://tqy6IYGO.syxmx.cn
http://OMbFLujq.syxmx.cn
http://d7LG2e4h.syxmx.cn
http://pLmAsL78.syxmx.cn
http://www.dtcms.com/a/370966.html

相关文章:

  • C++比较两个字符串
  • RocketMQ如何处理消息堆积
  • Maimo-AI驱动的行业研究工作平台
  • 「数据获取」《中国服务业统计与服务业发展(2014)》
  • C++:深入剖析vector
  • Arazzo AI监考Agent API实战教程
  • *和->的区别
  • MySQL中有哪些锁
  • 什么是云手机?
  • 基于FPGA的电梯控制系统设计(论文+源码)
  • Vllm-0.10.1:vllm bench serve参数说明
  • 华为悦盒EC6108V9/EC6108V9U/EC6108V9C_MV100(pub普通版/CA高安版)卡刷和强刷固件包
  • JVM中常见的GC垃圾收集器
  • Rsyslog日志采集
  • 代理连接性能优化:提升网络效率的关键技术与实践
  • NV308NV309美光固态闪存NW388NW504
  • C++中的栈
  • 手撕C++ list容器:从节点到完整双向链表实现
  • [Windows] AdGuard.v7.21.5089.0 中文直装电脑版
  • Skia如何渲染 Lottie 动画
  • 打工人日报#20250906
  • 基于GOA与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 【完整源码+数据集+部署教程】苹果实例分割检测系统源码和数据集:改进yolo11-AggregatedAtt
  • [Upscayl图像增强] 多种AI处理模型 | 内置模型与自定义模型
  • RK3568 Trust
  • ECharts Gallery:Apache官方数据可视化模板库,助你快速制作交互图表并实现深度定制
  • 【LeetCode热题100道笔记】二叉搜索树中第 K 小的元素
  • HMI(人机界面)
  • 懒加载的概念
  • panther X2 armbian24 安装宝塔(bt)面板注意事项