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

开源|低代码表单FormCreate通过循环创建多个表单?

本文将展示如何使用低代码表单 form-create 在循环创建多个表单,并实现表单的动态添加、重置和提交功能。我们将使用 Mock 数据模拟从接口获取的表单数据,并提供详细的代码示例和解释。

源码地址: Github | Gitee

formCreate

<template><div><el-button @click="fetchFormData">获取表单数据</el-button><el-button @click="addForm">添加表单</el-button><el-button @click="resetForms">重置表单</el-button><br/><br/><div v-for="form in forms" :key="form.id"><form-create:rule="form.rules":option="formOptions"v-model:api="form.api"v-model="form.data"/><el-divider></el-divider></div><el-button type="primary" @click="handleSubmit">提交表单</el-button></div>
</template><script setup>
import {ref} from 'vue';
import {ElButton, ElDivider} from 'element-plus';
import formCreate from '@form-create/element-ui';// Mock 数据
const mockData = () => [{name: '张三', email: 'zhangsan@example.com'},{name: '李四', email: 'lisi@example.com'},{name: '王五', email: 'wangwu@example.com'},
];let idCounter = 1;const createForm = (defaultData = {}) => ({id: idCounter++,rules: [{type: 'input',field: 'name',title: `表单 ${idCounter - 1} - 姓名`,props: {placeholder: '请输入姓名'},validate: [{required: true, message: '姓名不能为空', trigger: 'blur'}],},{type: 'input',field: 'email',title: `表单 ${idCounter - 1} - 邮箱`,props: {placeholder: '请输入邮箱'},validate: [{required: true, message: '邮箱不能为空', trigger: 'blur'},{type: 'email', message: '请输入有效的邮箱地址', trigger: 'blur'},],},],data: defaultData,api: null,
});const forms = ref([]);const formOptions = ref({submitBtn: false,resetBtn: false,forceCoverValue: true,
});const fetchFormData = async () => {try {// 使用 Mock 数据代替接口请求const formData = mockData(); // 假设 mockData 是从接口返回的数据// 根据 Mock 数据确定表单数量,并附带默认值forms.value = formData.map(data => createForm(data));} catch (error) {console.error('获取表单数据失败:', error);}
};const addForm = () => {forms.value.push(createForm());
};const resetForms = () => {fetchFormData(); // 重新从 Mock 数据获取数据
};// 表单提交处理函数
const handleSubmit = () => {Promise.all(forms.value.map(form => form.api.validate())).then(() => {const formData = [];forms.value.forEach(form => {formData.push(form.data);});alert(JSON.stringify(formData));});
};fetchFormData();
</script><style>
/* 自定义样式 */
</style>

在这里插入图片描述

代码说明

  • 按钮区域: 包含三个按钮用于获取表单数据、添加新表单和重置表单。按钮的 @click 事件绑定到相应的方法。

  • 循环渲染表单: 使用 v-for 指令遍历 forms 数组,渲染每个表单。每个表单通过 form-create 组件生成,key 使用唯一的 form.id。

  • 表单创建: createForm 函数生成具有默认数据的表单配置。idCounter 用于确保每个表单具有唯一的 id。

  • 获取表单数据: fetchFormData 方法使用 mockData 模拟从接口获取数据,初始化表单列表。

  • 添加表单: addForm 方法向表单列表中添加一个新的空表单。

  • 重置表单: resetForms 方法重新从 Mock 数据获取数据,重置表单列表。

  • 提交表单: handleSubmit 方法验证所有表单数据,并在验证成功后输出表单数据。

注意事项

  • Mock 数据: 在实际开发中,应将 mockData 替换为真实的 API 请求。
  • 唯一标识: 使用 idCounter 确保每个表单具有唯一的 id,避免使用索引作为 key。
  • 表单验证: 在 handleSubmit 方法中,使用 Promise.all 确保所有表单都通过验证。

http://www.mrgr.cn/news/20159.html

相关文章:

  • 使用Unity的准备
  • 基于PHP+MySQL组合开发的智能电子企业名片小程序源码系统 带完整的安装代码包以及搭建部署教程
  • Django+Vue协同过滤算法图书推荐系统的设计与实现
  • 监控视频删除了怎么恢复回来?教你恢复的方法
  • PHP创新引领智慧先行智慧小区物业管理系统小程序源码
  • 创新大赛国赛路演:如何准备一份打动人心的路演稿
  • idea新建父工程和添加导入新模块的步骤
  • 通过组合Self-XSS + CSRF得到存储型XSS
  • Tomato靶场通关攻略
  • 【免费分享】嵌入式Linux开发板【入门+项目,应用+底层】资料包一网打尽,附教程/视频/源码...
  • 【C-实践】文件服务器(1.0)
  • C++——类和对象(1)
  • Hive时间窗口函数保姆级教程(最全解析、应用和优化)(持续更新)
  • 解析查看elf文件的构成
  • Python requests库详细介绍
  • 探索中国星坤:构建全球合作网络,服务全球客户!
  • 手机玩地平线教程 GameViewer远程助你手机随时随地玩3A大作 手机怎么玩地平线
  • 【开源免费】基于SpringBoot+Vue.JS在线竞拍系统(JAVA毕业设计)
  • 【Gtoken Tool】区块链在供应链多方协作场景中的应用优势是什么
  • Android OpenGLES开发:EGL环境搭建