a vue form component just like json-editor
# npm/yarn
npm install vue-awesome-form
yarn add vue-awesome-form
register the component
import Vue from 'vue'
import SchemaForm from 'vue-awesome-form'
import 'vue-awesome-form/dist/main.css'
Vue.component('schema-form', SchemaForm)
use in component
<schema-form
ref="schemaForm"
:schema="formData.schema"
:value="formData.value"
></schema-form>
CDN
<script src="https://unpkg.com/vue-awesome-form@latest/dist/main.js"></script>
<script src="https://unpkg.com/vue-awesome-form@latest/dist/main.css"></script>
Props:
schema:an object like this
"register": {
"type": "TheTree",
"title": "register",
"properties": {
"name": {
"type": "TheInput",
"title": "name",
"rules": {
"required": true,
"message": "The name cannot be empty"
}
},
"location": {
"type": "TheTree",
"title": "address",
"propertyOrder": 3,
"properties": {
"province": {
"type": "TheInput",
"title": "province",
"rules": {
"required": true,
"message": "The province cannot be empty"
}
},
"city": {
"type": "TheInput",
"title": "city",
"rules": {
"required": true,
"message": "The city cannot be empty"
}
}
}
}
}
}
value: the initValue of the form
"register": {
"name": "wqe",
"location": {
"province": "beijing",
"city": "beijing"
}
}
methods:
validate: validate the form and return the result and the value of the form
resetFields: reset the form to init value
handleSubmit() {
this.$refs.schemaForm.validate((err, values) => {
if(err) {
console.log('fail');
} else {
console.log('succ', values);
}
})
},
handleReset() {
this.$refs.schemaForm.resetFields();
}
the following demo contains all the functions of the component and the supported form items.
demo: http://jsrun.net/bKgKp/embedded/all/light/
This article introduces the detailed implementation of this component.