¡Un generador de formulario basado en el esquema JSON, traiga sus componentes!
No hay componentes preBuidos para que se enojara su forma junto. En su lugar, puede usar cualquier componente o elemento que emita un evento, personalizado o nativo.
Tenga en cuenta que esencialmente todos los componentes VUE que usan
v-modelemite un eventoinput(o similar). Consulte la guía de Vue para obtener más información
Instalar desde NPM
npm install vue-form-json-schema
Importar a su aplicación
import Vue from 'vue' ;
import VueFormJsonSchema from 'vue-form-json-schema' ;
Vue . component ( 'vue-form-json-schema' , VueFormJsonSchema ) ;Nota Si no está utilizando Webpack / Rollup y desea usar la versión ESM que necesita para importar VueFormjSonschema como esta:
import VueFormJsonSchema from 'vue-form-json-schema/dist/vue-form-json-schema.esm.js' ;Consulte las demostraciones o vea un ejemplo mínimo en las instrucciones de uso para comenzar.
Si está utilizando la versión UMD, puede encontrar más ejemplos en la carpeta
examplesdel repositorio de GitHub y la demostración de UMD a continuación.
Si desea usar vue-form-json-schema directamente en un navegador, puede hacerlo usando la versión UMD. La versión UMD autoinstala el componente vue-form-json-schema si se encuentra Vue en la ventana. Todo el módulo también está disponible en window.VueFormJsonSchema , donde se puede acceder a las exportaciones nombradas, como por ejemplo, se puede acceder vfjsFieldMixin .
<script src="https://unpkg.com/vue-form-json-schema@latest/dist/vue-form-json-schema.umd.js"></script>
Puede sustituir vue-form-json-schema@latest a una versión fija, como [email protected]
<script src="../node_modules/dist/vue-form-json-schema.umd.js"></script>
Tenga en cuenta que todas las demostraciones usan el estilo Bootstrap, pero no se incluye un estilo en este paquete y depende de usted qué estilos deben usarse.
La menor cantidad de configuración para representar un elemento input .
Uso de clases de arranque para mostrar cómo el diseño puede ser diferente para dispositivos con diferentes tamaños de pantalla. En este ejemplo, dos campos de entrada se envolverán dentro de un DIV con clases col-12 col-sm-6 . Intente cambiar el tamaño de la ventana de su navegador también verlo en acción.
A veces, solo se debe mostrar un campo si se cumple una condición. Utiliza <transition> para proporcionar animación.
Consulte cómo usar sus propios componentes VUE o de terceros en vue-form-json-schema .
¿Cargando el formulario desde un backend? Mira este ejemplo.
Un ejemplo más completo con mensajes de validación y error
El formulario de registro anterior donde las claves del modelo de formulario están anidados bajo otra clave
Todos los ejemplos anteriores se replican utilizando la versión UMD en la carpeta de examples de este repositorio.
Versión en línea de la primera demostración
32K sin comprimir, 6.5K Gzipped)Bitón
Para usar la versión UMD, consulte la carpeta de
examplesdonde todas las demostraciones anteriores se replican usando la versión UMD
Ver demostración
< template >
< vue-form-json-schema
v-model = "model"
: schema = "schema"
: ui-schema = "uiSchema"
>
</ vue-form-json-schema >
</ template >
< script >
export default {
data ( ) {
return {
// An object which holds the form values
model : { } ,
// A valid JSON Schema object
schema : {
type : 'object' ,
properties : {
firstName : {
type : 'string' ,
} ,
} ,
} ,
// Array of HTML elements or Vue components
uiSchema : [ {
component : 'input' ,
model : 'firstName' ,
// Same API as [Vue's render functions](https://vuejs.org/v2/guide/render-function.html#The-Data-Object-In-Depth)
fieldOptions : {
class : [ 'form-control' ] ,
on : [ 'input' ] ,
attrs : {
placeholder : 'Please enter your first name' ,
} ,
} ,
} ] ,
} ;
}
} ;
< / script >Para la validación de formulario utilizando el esquema JSON y la validación interna
get , set y merge se usan en todo el paquete. Sin embargo, el tamaño del paquete es muy importante y siempre se considera, por lo que despojamos mucho de Lodash para incluir solo las necesidades absolutas
Probado con v2.5.9 pero probablemente funcionará en cualquier versión> = v2.4.0
options.ajv.locale Configuraciónvfs-global Prop ui-schemavfs-component Prop ui-schema