FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持5个UI框架,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定

FormCreate官网:https://www.form-create.com

帮助文档:https://form-create.com/v3/


1. 生成内置组件
<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
</form-create>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{type: 'input', field: 'field1', title: 'input', value: ''},
{type: 'datePicker', field: 'field2', title: 'date', value: ''},
]
}
}
}
</script>

2. 生成UI组件

<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
</form-create>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{
type: 'AButton',
props: {
size: 'mini'
},
children: ['AButton']
},
{
type: 'AImage',
//非表单组件不会自动生成col,自定义组件需要通过native控制是否生成col
native: false,
props: {
width: '200px',
src: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
}
},
]
}
}
}
</script>

3. 生成自定义组件

<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
</form-create>
</div>
</template> <script>
import {h, defineComponent, resolveComponent} from 'vue'
import formCrate from '@form-create/ant-design-vue'
import formCreate from "@form-create/ant-design-vue";
// import UserSelect from "./UserSelect.vue";
//自定义表单组件
const UserSelect = defineComponent({
props: {
//预定义
disabled: Boolean,
modelValue: Number,
options: Array,
},
emits: ['update:modelValue'],
data: function () {
return {
value: this.modelValue,
}
},
render() {
return h(resolveComponent('ASelect'), {
disabled: this.disabled,
value: this.value,
'onUpdate:value': this.onChange,
options: this.options
});
},
watch: {
modelValue(n) {
//同步 value 的值
this.value = n
}
},
methods: {
onChange: function (val) {
this.value = val;
//更新组件内部的值
this.$emit('update:modelValue', val)
},
},
}); export default {
beforeCreate() {
//挂载组件
formCrate.component('UserSelect', UserSelect);
},
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{
type: 'UserSelect',
field: 'field1',
title: '用户选择',
value: '小王',
props: {
options: [
{label: '小王', value: '小王'},
{label: '小李', value: '小李'},
]
},
},
]
}
}
}
</script>

4. 通过插槽生成组件

<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
</form-create>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{
type: 'div',
style: 'width:200px;height:200x;background-color:#FF7271;',
children: [
{
type: 'span',
style: 'color:#FFFFFF;',
children: ['FormCreate']
}
]
},
]
}
}
}
</script>

5. 生成HTML标签

<template>
<div>
<form-create :rule="rule" v-model:api="fApi" :option="options" v-model="value">
<template #type-UserSelect="scope">
<ASelect :value="scope.model.value" v-bind="scope.prop" @update:value="scope.model.callback">
</ASelect>
</template>
</form-create>
</div>
</template> <script>
export default {
data() {
return {
fApi: {},
value: {},
options: {
onSubmit: (formData) => {
alert(JSON.stringify(formData))
},
resetBtn: true
},
rule: [
{
type: 'UserSelect',
field: 'field1',
title: '用户选择',
value: '小王',
props: {
options: [
{label: '小王', value: '小王'},
{label: '小李', value: '小李'},
]
},
},
]
}
}
}
</script>

使用form-create生成表单组件的更多相关文章

  1. 编写antd配置表单组件

    编写antd配置表单组件 整体思路 抽取formitem的配置数组:包含组件类型.名称.label名称,相关的opts和扩展的opts,传递进入组件 组件通过Form.create()进行表单创建,能 ...

  2. 表单组件 form fastadmin(生成表单元素)

    Form组件 定义文件位置: /extend/fast/Formphp 通用参数 $name 通常为我们组件的名称(name属性值),我们在后台接收时可以通过这个名称来获取到它所对应的值 $value ...

  3. Django form表单 组件

    目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...

  4. Form( 表单) 组件

    本节课重点了解 EasyUI 中 Form(表单)组件的使用方法, 这个组件不依赖于任何组件.一. 加载方式表单组件只能在 JS 区域设置,首先定义一张表单.<form id="box ...

  5. 第二百二十一节,jQuery EasyUI,Form(表单)组件

    jQuery EasyUI,Form(表单)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Form(表单)组件的使用方法,这个组件不依赖于 ...

  6. Vue + Element-ui实现后台管理系统(5)---封装一个Form表单组件和Table表格组件

    封装一个Form表单组件和Table组件 有关后台管理系统之前写过四遍博客,看这篇之前最好先看下这四篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-syste ...

  7. 封装react antd的form表单组件

    form表单在我们日常的开发过程中被使用到的概率还是很大的,比如包含了登录.注册.修改个人信息.新增修改业务数据等的公司内部管理系统.而在使用时这些表单的样式如高度.上下边距.边框.圆角.阴影.高亮等 ...

  8. 封装Vue Element的form表单组件

    前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...

  9. vue自定义表单生成器,可根据json参数动态生成表单

    介绍 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置17种常用表单组件和自定义组件,再复杂的表单都可 ...

  10. 基于PHP和mysql的自动生成表单

    开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...

随机推荐

  1. T 语言语法设计(预审稿)

    欢迎吐槽 一. 字面量 1. 数字字面量 0, 0xff, 0b10_01, .1 2. 字符串字面量 'x', "x\n\uffff\Uffffffff", `x{1}y` 3. ...

  2. oracle用命令执行sql脚本文件

    当sql命令过多(sql文件过大)时,用plsql执行时比较慢而且容易超时,此时可以用sqlplus命令直接执行sql脚本文件,方法如下: 1.sqlplus登录 >sqlplus userna ...

  3. 加入security+jwt安全策略

    Pom中引入 <!-- security --> <dependency> <groupId>org.springframework.boot</groupI ...

  4. IDEA导入他人的项目时提示“project sdk is not defined”的解决办法

    IDEA导入他人的项目时提示"project sdk is not defined"的解决办法 1.在IDEA中,在有问题的项目上单击鼠标右键,然后选择"Open Mod ...

  5. vivo手机上的系统级消息推送平台的架构设计实践

    本文由vivo互联网服务器团队李青鑫分享,有较多修订和改动. 1.引言 本文内容来自vivo互联网服务器团队李青鑫在"2021 vivo开发者大会"现场的演讲内容整理而成(现场演讲 ...

  6. manim边学边做--改变动画速度

    ChangeSpeed类是Manim库中用于修改动画速度的类. 它提供了一种灵活的方式来控制动画的播放速度,使动画在不同时间段内以不同的速度播放,从而创造出更加丰富多样的动画效果. 比如,在创建包含多 ...

  7. 记录一下vue的插件

    2022.1.25今天记录下下载文件的插件  js-file-download  以防遗忘 首先npm install  js-file-download --save 其次引入import file ...

  8. vue基础3

    1.watch 案例:百度搜索框 注释的是用watch实现的 然后这个我用的是oninput事件 a.深浅监听 浅监听 深监听(不建议使用) 2.过滤器 全局: Vue.fliter('过滤器名字', ...

  9. 【转】史上最详细的 JDK 1.8 HashMap 源码解析

    HashMap的源码应该是我看过最多变的JDK源码,没有之一,自己也写过一些帖子来记录自己的感悟,虽然其中涉及数据结构以及实现方式也都有所掌握,但是每次看都有不一样的收获,尤其是源码作者的编码思路以及 ...

  10. wix tool 打包官方例子

    wixtoolset 和VS 插件:https://wixtoolset.org/releases/ 教学:https://www.firegiant.com/wix/tutorial/getting ...