Un générateur de formulaire basé sur le schéma JSON, apportez vos composants!
Il n'y a pas de composants préconçus pour que vous puissiez en puander votre forme avec. Au lieu de cela, vous pouvez utiliser n'importe quel composant ou élément qui émet un événement, personnalisé ou natif.
Notez que essentiellement tous les composants Vue qui utilise
v-modelémet un événementinput(ou similaire). Voir le guide de Vue pour plus d'informations
Installer à partir de NPM
npm install vue-form-json-schema
Importer dans votre application
import Vue from 'vue' ;
import VueFormJsonSchema from 'vue-form-json-schema' ;
Vue . component ( 'vue-form-json-schema' , VueFormJsonSchema ) ;Remarque Si vous n'utilisez pas WebPack / Rollup et que vous souhaitez utiliser la version ESM, vous devez importer VueFormjSonschema comme ceci:
import VueFormJsonSchema from 'vue-form-json-schema/dist/vue-form-json-schema.esm.js' ;Consultez les démos ou voyez un exemple minimal dans les instructions d'utilisation pour commencer.
Si vous utilisez la version UMD, vous pouvez trouver plus d'exemples dans le dossier
examplesdu repo GitHub et de la démo UMD ci-dessous.
Si vous souhaitez utiliser vue-form-json-schema directement dans un navigateur, vous pouvez le faire en utilisant la version UMD. La version UMD se déroule automatiquement le composant vue-form-json-schema si Vue se trouve sur la fenêtre. L'ensemble du module est également disponible sur window.VueFormJsonSchema où les exportations nommées telles que par exemple vfjsFieldMixin sont accessibles.
<script src="https://unpkg.com/vue-form-json-schema@latest/dist/vue-form-json-schema.umd.js"></script>
Vous pouvez substituer vue-form-json-schema@latest à une version fixe, comme [email protected]
<script src="../node_modules/dist/vue-form-json-schema.umd.js"></script>
Notez que toutes les démos utilisent le style bootstrap, mais aucun style n'est inclus dans ce package et c'est à vous de savoir quel styles doivent être utilisés.
Le moins de configuration pour rendre un élément input .
Utilisation de classes bootstrap pour montrer comment la mise en page peut être différente pour les appareils avec différentes tailles d'écran. Dans cet exemple, deux champs d'entrée seront enveloppés à l'intérieur d'une div avec des classes col-12 col-sm-6 . Essayez de redimensionner la fenêtre de votre navigateur, voyez-le aussi en action.
Parfois, un champ ne doit être affiché que si une condition est remplie. Utilise <transition> pour fournir une animation.
Découvrez comment utiliser vos propres composants Vue ou tiers dans vue-form-json-schema .
Chargement du formulaire à partir d'un backend? Consultez cet exemple.
Un exemple plus complet avec des messages de validation et d'erreur
Le formulaire d'enregistrement ci-dessus où les clés du modèle de formulaire sont imbriquées sous une autre clé
Tous les exemples ci-dessus sont reproduits à l'aide de la version UMD dans le dossier examples de ce référentiel.
Version en ligne de la première démo
32K non compressé, 6.5K gziped)Gitbook
Pour utiliser la version UMD, consultez le dossier
examplesoù toutes les démos ci-dessus sont reproduites à l'aide de la version UMD
Voir la démo
< 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 >Pour la validation du formulaire en utilisant le schéma JSON et la validation interne
get , set et merge sont utilisés dans tout le package. La taille du faisceau est cependant très importante et est toujours prise en compte et nous supprimons donc fortement Lodash pour n'inclure que les nécessités absolues
Testé avec v2.5.9 mais fonctionnera probablement sur n'importe quelle version> = v2.4.0
options.ajv.locale paramètrevfs-global Prop ui-schemavfs-component ui-schema