内容简介:form-create 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成器。并且支持生成任何 Vue 组件。结合内置17种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。通过 JSON 创建表单
介绍
form-create 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成器。并且支持生成任何 Vue 组件。结合内置17种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。
功能
-
自定义组件
- 可生成任何Vue组件
- 自带数据验证
- 轻松转换为表单组件
- 通过 JSON 生成表单
- 通过 Maker 生成表单
- 强大的API,可快速操作表单
- 双向数据绑定
- 事件扩展
- 局部更新
- 数据验证
- 栅格布局
- 内置组件17种常用表单组件
对比 1.x
- 速度更快
- 体积更小
- 更强大的全局配置
- 自定义组件更容易扩展
- 更容易支持第三方 UI 库
- 更少的 bug
示例
通过 JSON 创建表单
通过 API 操作表单
@form-create包说明
名称 | 说明 |
---|---|
@form-create/iview | iview 版表单生成器 |
@form-create/element-ui | element-ui 版表单生成器 |
@form-create/core | form-create 核心包 |
@form-create/utils | form-create 工具包 |
@form-create/data | 省市区多级联动数据 |
使用
以element-ui版本为例介绍如何在项目中使用 form-create
安装
npm i @form-create/element-ui
挂载
全局注册
import formCreate form '@form-create/element-ui'; Vue.use(formCreate);
局部挂载
import formCreate form '@form-create/element-ui'; export default { components:{ formCreate:formCreaet.$form() } }
生成表单
<template> <form-create v-model="$f" :rule="rule" @on-submit="onSubmit"></form-create> </template>
export default { data () { return { //表单实例对象 $f:{}, //表单生成规则 rule:[ { type:'input', field:'goods_name', title:'商品名称' }, { type:'datePicker', field:'created_at', title:'创建时间' } ] }; }, methods:{ onSubmit(formData){ //TODO 提交表单 } } };
效果
实例对象 $f
可以通过 $f 快速操作表单,例如:
$f.hidden $f.validate $f.setValue $f.append
自定义组件
生成
通过标签生成
{ type:'el-button', name: 'btn', props:{ type:'primary', field:'btn', loading:true }, children:['加载中'] }
通过模板生成
{ type:'template', name:'btn' template:'<el-button :loading="loading">{{text}}<el-button>', vm: new Vue({ data:{ loading:true, text:'加载中' } }) }
转换为表单组件
自定义组件转换为表单组件后,可通过 $f.formData
, $f.getValue
, $f.setValue
, $f.disabled
等方法快速操作组件,达到和内置组件相同的效果
预定义
props
在自定义组件内部通过 props
接收一下属性
value disabled
例如:
vm = Vue({ props:{ value:String, disabled:Boolean } })
input 事件
通过 input
事件更新组件内部的值
当组件值发生变化后,通过 input 事件更新值.例如:
vm.$emit('input',newValue);
挂载自定义组件
要生成的自定义组件必须通过 Vue.component
方法挂载到全局,或者通过 formCreate.component
方法挂载
例如:
formCreate.component('TestComponent',component);
或者
Vue.component('TestComponent',component);
生成
表单组件必须定义 field
属性
JSON
{ type:'TestComponent', value:'test', field:'testField', title:'自定义组件' }
Maker
formCreate.maker.create('TestComponent','testField','自定义组件').value('test')
示例
自定义计数器按钮组件,获取按钮点击数.该组件的功能和内置组件相同
formCreate.maker.template('<el-button @click="onClick" long :disabled="disabled">计数器-{{num}}</el-button>', new Vue({ props:{ //预定义 disabled:Boolean, value:Number, }, data: function () { return { num: this.value, } }, watch:{ value(n){ this.num = n; } }, methods: { onClick: function () { this.num++; //更新组件内部的值 this.$emit('input',this.num); }, }, }), 'tmp', '自定义 title').value(100).props('disabled',false)
完整示例
以上所述就是小编给大家介绍的《自定义表单生成器form-create v2介绍》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 橙单中台化低代码生成器 v1.7 发布,可视化拖拽在线表单和数据接口
- 表单 – 避免Symfony强制显示表单字段
- 细说 Angular 2+ 的表单(二):响应式表单
- 8款最新CSS3表单 环形表单很酷
- 动态表单 form-create 2.5 版本来啦,帮你轻松搞定表单
- 开源 | vue-form-making:基于 Vue 的表单设计器,让表单开发简单而高效
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Programming Python
Mark Lutz / O'Reilly Media / 2006-8-30 / USD 59.99
Already the industry standard for Python users, "Programming Python" from O'Reilly just got even better. This third edition has been updated to reflect current best practices and the abundance of chan......一起来看看 《Programming Python》 这本书的介绍吧!