使用form-create生成表单组件
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生成表单组件的更多相关文章
- 编写antd配置表单组件
编写antd配置表单组件 整体思路 抽取formitem的配置数组:包含组件类型.名称.label名称,相关的opts和扩展的opts,传递进入组件 组件通过Form.create()进行表单创建,能 ...
- 表单组件 form fastadmin(生成表单元素)
Form组件 定义文件位置: /extend/fast/Formphp 通用参数 $name 通常为我们组件的名称(name属性值),我们在后台接收时可以通过这个名称来获取到它所对应的值 $value ...
- Django form表单 组件
目录 Django form表单 组件 Form 组件介绍 普通方式手写注册功能 使用form组件实现注册功能 Form 常用字段与插件 常用字段(必备) 字段参数(必备) 内置验证(必备) 自定义效 ...
- Form( 表单) 组件
本节课重点了解 EasyUI 中 Form(表单)组件的使用方法, 这个组件不依赖于任何组件.一. 加载方式表单组件只能在 JS 区域设置,首先定义一张表单.<form id="box ...
- 第二百二十一节,jQuery EasyUI,Form(表单)组件
jQuery EasyUI,Form(表单)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Form(表单)组件的使用方法,这个组件不依赖于 ...
- Vue + Element-ui实现后台管理系统(5)---封装一个Form表单组件和Table表格组件
封装一个Form表单组件和Table组件 有关后台管理系统之前写过四遍博客,看这篇之前最好先看下这四篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-syste ...
- 封装react antd的form表单组件
form表单在我们日常的开发过程中被使用到的概率还是很大的,比如包含了登录.注册.修改个人信息.新增修改业务数据等的公司内部管理系统.而在使用时这些表单的样式如高度.上下边距.边框.圆角.阴影.高亮等 ...
- 封装Vue Element的form表单组件
前两天封装了一个基于vue和Element的table表格组件,阅读的人还是很多的,看来大家都是很认同组件化.高复用这种开发模式的,毕竟开发效率高,代码优雅,逼格高嘛.虽然这两天我的心情很糟糕,就像& ...
- vue自定义表单生成器,可根据json参数动态生成表单
介绍 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置17种常用表单组件和自定义组件,再复杂的表单都可 ...
- 基于PHP和mysql的自动生成表单
开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...
随机推荐
- Nuget Reference 丢失问题
现象 在 Visual Studio 2017 中创建一个控制台项目.创建出来的项目如下所示. 通过 NuGet 管理器,添加 Newtonsoft.Json 的 NuGet 包,安装之后,项目中添加 ...
- 【Web前端】【疑难杂症】轮播图图片自适应显示问题(bootstrap3轮播图)
关键代码 html <!-- 轮播图开始--> <div id="header" class="carousel slide"> < ...
- Qt数据库应用22-文件编码格式识别
一.前言 在做数据导入导出的过程中,如果应用场景多了,相信各位都会遇到一个问题就是文件编码的问题,有些文件是ANSI编码,有些是utf8编码,有些又是utf8带bom编码,不同的文件编码如果都用同一种 ...
- Ubuntu系统编译opencv4.0以上以及opencv_contrib
一.安装依赖 sudo apt install build-essential cmake libtbb2 libttb-dev libgtk-3-dev sudo apt install ...
- C#中如何使用异步编程
在 C# 中,异步编程主要通过 async 和 await 关键字来实现.异步编程的目的是让程序在执行耗时操作(如 I/O 操作.网络请求等)时不会阻塞主线程,从而提高程序的性能. 1. 异步编程的核 ...
- 创建企业级地理数据库——PostgreSQL版
创建PostgreSQL空间数据库 填写相应的参数,选择授权文件 报错 默认安装postgresql后,执行以上操作报错 "You must copy the latest ST_GEOME ...
- WPF中webview2鼠标移动窗体
WPF里webview2会一直处于其他控件最上层,是个历史遗留问题. 为了能在webview2里鼠标移动让窗体跟着移动位置代码如下: async Task InitializeAsync() { Ap ...
- shell脚本中的变量
在shell脚本中使用变量显得我们的脚本更加专业更像是一门语言,开个玩笑,变量的作用当然不是为了专业.如果你写了一个长达1000行的shell脚本,并且脚本中出现了某一个命令或者路径几百次.突然你觉得 ...
- e-prime3安装
e-prime2.0版本太老,现在安装尝试3.0. 下载 链接: https://pan.baidu.com/s/1XJFDqhoArpIwEf0NpKvoIQ 提取码: h5xk 安装 解压安装包后 ...
- uni-app之页面跳转(点击按钮进行页面跳转)
001==>点击按钮进行页面跳转 <view class="" @tap="gotoLunBo"> 去轮播页 </view> // ...