Skip to content

Vue dynamic nested form component, support nested Object/Hashmap/Array. Vue动态多级表单组件,支持嵌套对象/Hashmap/数组。

License

Notifications You must be signed in to change notification settings

chenquincy/vue-dynamic-form-component

Folders and files

NameName
Last commit message
Last commit date
Oct 20, 2020
Oct 20, 2020
Oct 20, 2020
Jun 25, 2019
Aug 13, 2019
Jul 21, 2020
May 31, 2019
May 31, 2019
May 31, 2019
May 31, 2019
Jun 18, 2019
Jun 18, 2019
Oct 20, 2020
May 28, 2019
Dec 19, 2021
Aug 2, 2019
Mar 30, 2022
May 31, 2019
Aug 2, 2019
Aug 14, 2023

Repository files navigation

Introduction

vue-dynamic-form-component is a dynamic form component base on element-ui and async-validator. You just need to write descriptors(reference to async-validator) of the data you want, vue-dynamic-form-component will generate the form automatically.

Docs

Usage Example

vue-dynamic-form-component.gif

<template>
  <dynamic-form
    ref="dynamic-form"
    v-model="data"
    :descriptors="descriptors">
    <template slot="operations">
      <el-button @click="reset">reset</el-button>
      <el-button type="primary" @click="validate">validate</el-button>
    </template>
  </dynamic-form>
</template>

<script>
// import and register element-ui first
import DynamicForm from 'vue-dynamic-form-component'

export default {
  components: {
    DynamicForm
  },
  data () {
    return {
      descriptors: {
        name: { type: 'string', min: 3, max: 15, required: true },
        homepage: { type: 'url', message: 'The homepage must be an url' },
        company: {
          type: 'object',
          fields: {
            name: { type: 'string', required: true },
            address: {
              type: 'object',
              fields: {
                province: { type: 'string', required: true },
                city: { type: 'string' }
              }
            }
          }
        },
        children: {
          type: 'array',
          defaultField: {
            type: 'object',
            fields:{
              name: { type: 'string', min: 3, max: 15, required: true },
              age: { type: 'number', min: 1, max: 100, required: true }
            }
          }
        }
      },
      data: {}
    }
  },
  methods: {
    reset () {
      this.$refs['dynamic-form'].resetFields()
    },
    validate () {
      this.$refs['dynamic-form'].validate()
    }
  }
}
</script>

Features

  • Generate form from descriptors
  • Support almost all data type
  • Support multi-level form for Object / Array / Hashmap
  • Support data validation
  • Multi-Languages support
  • Support custom component

Todo

vue-dynamic-form-component can do more. There are a few things that it currently doesn't support but are planned:

  • Custom component props
  • Custom component event
  • Custom component
  • Custom theme
  • Value change event

Question

Please submit your question in Github Issue .

License

MIT license

About

Vue dynamic nested form component, support nested Object/Hashmap/Array. Vue动态多级表单组件,支持嵌套对象/Hashmap/数组。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published