介绍

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

功能

自定义组件

可生成任何Vue组件

自带数据验证

轻松转换为表单组件

通过 JSON 生成表单

通过 Maker 生成表单

强大的API,可快速操作表单

双向数据绑定

事件扩展

局部更新

数据验证

栅格布局

内置组件17种常用表单组件

对比 1.x

速度更快

体积更小

更强大的全局配置

自定义组件更容易扩展

更容易支持第三方 UI 库

更少的 bug

示例

通过 JSON 创建表单

通过 API 操作表单

@form-create包说明

名称说明

@form-create/iview

@form-create/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';

exportdefault{

components:{

formCreate:formCreaet.$form()

}

}

生成表单

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:'{{text}}',

vm:newVue({

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('计数器-{{num}}', newVue({

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)

完整示例

vue 根据字符串生成表单_vue自定义表单生成器,可根据json参数动态生成表单相关推荐

  1. vue 渲染JSON数据动态生成表格组件

    vue 通过渲染JSON数据动态生成表头及对应表格内容组件 <template><div id="viewDialog"><el-button typ ...

  2. highcharts ajax 数据格式,Highcharts ajax获取json对象动态生成报表生成 .

    最近做个项目,项目经理想做一个统计报表,在网上查看些资料就选用Highchars 这里和大家分享下使用心得. 重点说明此代码是针对一个报表显示多个项对比显示. 直接贴代码:web端 $(documen ...

  3. JSON格式化 动态生成表格 表格转置 行列转换 Excel导出

    先看效果 初始化: JSON格式化 : 生成表格-方式1 : 生成表格-方式2 : Excel导出 需要行求和.列求和功能的查看 JSON格式化 动态生成表格 表格转置 行列转换 Excel导出 行求 ...

  4. .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml)

    .net core将URL请求格式化为XML或JSON(网站动态生成sitemap.xml) 首先设置 Startup.cs 文件 配置 ConfigureServices services.AddM ...

  5. jsp页面根据json数据动态生成table

    根据需求由于不同的表要在同一个jsp展示,点击某个表名便显示某张表内容,对于java后台传给jsp页面的json形式的数据是怎么动态生成table的呢? 找了好久,终于找到某位前辈的答案,在此表示衷心 ...

  6. vue组件一直注册不了_Vue自定义组件及组件的注册方法

    为了能在模板中使用,这些组件必须先注册以便 Vue 能够识别.这里有两种组件的注册类型:全局注册和局部注册.至此,我们的组件都只是通过Vue.component全局注册的:Vue.component( ...

  7. vue 判断字符串是否是英文_vue rules以及原生js判断字符串是否为正整数(正小数)...

    1.在vue中 使用rules形式进行校验 1.首先在vue文件的methods()中添加校验方法,这里校验方法命名为isNumber用自带的.test方法进行正则校验 methods: { isNu ...

  8. layui做折线图_详解layuiAdmin单页版根据后台json数据动态生成左侧菜单栏

    layuiAdmin单页版根据后台 使用模板方式加载菜单 lay-url="菜单接口" lay-headers="将token带入请求头",如果没有,去掉就行 ...

  9. vue取url路径传参_vue不通过路由直接获取url中参数的方法示例

    前言 众所周知vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接在url后面拼接?mid=100的方 ...

最新文章

  1. grails springboot_groovy 使用spring boot
  2. IntelliJ IDEA常用统一设置(Linux/Mac/Windows)
  3. 硬盘提示RAW的文件找回方法
  4. python打开文件不存在-Python判断文件是否存在的三种方法
  5. js prototype
  6. LeetCode() Largest Number
  7. Spark机器学习库(MLlib)指南
  8. CAE+VBR如何提升用户体验?
  9. 图像灰度变换及图像数组操作
  10. 【覆盖安装】通用测试点
  11. Ansible(二)——基本环境的部署以及常用模块的使用
  12. lstm数学推导_LSTM简介以及数学推导(FULL BPTT)
  13. 用DirectX实现粒子系统(二)
  14. 存储服务器内的温度检测信号线 用线,常用的3线和4线电阻温度检测器介绍
  15. 架构之美-最强卷积神经网络架构设计初想
  16. 用gitee搭建自己的博客网站
  17. 解决mmediting运行模型报错(result, consumed) = self._buffer_decode(data, self.errors, final)编码utf-8的问题
  18. Map集合、 HashMap集合、LinkedHashMap集合、Hashtable集合
  19. 数字图像处理之特征提取及常用方法
  20. MyBatis+PageHelper实现分页

热门文章

  1. 《黎明时分的诗》王家新
  2. 关于gp和mysql的两点区别
  3. 去除IntelliJ IDEA中重复代码报灰黄色的下划波浪线
  4. IOS - iPhoneX 怎么进入 DFU 模式(刷机必备)?
  5. Phonegap事件之pause事件
  6. 全景照片是如何拍摄出来的?
  7. 用tensorflow进行数据增强
  8. 计算机基础知识中真值是什么,计算机基础知识(一)
  9. pythonk库函数minidom,wx
  10. 拉马努金,天才之超越