基于element-ui的vue表单组件封装,通过配置生成表单
通过config
配置项生成一张表单,起因是项目应用中,有几百张表单要通过对应的json
配置自动生成,方便通过配置维护,才做了这个组件。
组件的npm包名称是@lefreet/vue-form
,不是vue-form
。不想取别的名字了,@lefreet/vue-form
更关注表单配置抽象和简单取值。
- 发现低版本的脚手架存在
postcss-url
的依赖缺失问题, 集成本组件时发现postcss-url
引用报错,执行:npm i postcss-url -D
解决.
# install
npm install @lefreet/vue-form --save
<template>
<div id="app">
<vue-form :config="config" @submit="submit" ref="form"></vue-form>
</div>
</template>
<script>
import VueForm from '@lefreet/vue-form'
export default {
components: { VueForm },
data () {
return {
config: {
'cols': 1,
'label-width': '200px',
'values': {},
'fields': [{
'type': 'input',
'prop': 'name',
'label': 'name',
'options': {
// some options of element component
'placeholder': 'input your name'
}
}, {
'type': 'radio',
'prop': 'sex',
'label': 'sex',
'options': {
// some extend options by me
'radios': [{
'label': 'man',
'value': 1
}, {
'label': 'woman',
'value': 2
}]
}
}]
}
}
},
methods: {
// on submit event to get form's values by verifying
submit (values) {
console.log(values)
},
// use method to clear all fields
clear () {
this.$refs['form'].clearFields()
}
}
}
</script>
input
文本框radio
单选框checkbox
复选框select
下拉框switch
开关tree
树形下拉框date
时间选择框upload
文件上传richtext
富文本编辑器(vue-quill-editor)