Mit einem JSON -Schema -basierten Formular Generator bringen Sie Ihre Komponenten mit!
Es gibt keine vorgefertigten Komponenten, die Sie mit Ihrem Formular zusammen mit dem Rätsel geben können. Stattdessen können Sie eine beliebige Komponente oder ein beliebiges Element verwenden, das ein Ereignis ausgibt, das benutzerdefinierte oder native ist.
Beachten Sie, dass im Wesentlichen alle VUE-Komponenten, die
v-modelverwenden, eininput(oder ein ähnliches) Ereignis emittiert. Weitere Informationen finden Sie unter Vue's Guide
Installieren Sie von NPM
npm install vue-form-json-schema
Importieren Sie in Ihre App
import Vue from 'vue' ;
import VueFormJsonSchema from 'vue-form-json-schema' ;
Vue . component ( 'vue-form-json-schema' , VueFormJsonSchema ) ;Beachten Sie, ob Sie nicht WebPack / Rollup verwenden und die ESM -Version verwenden möchten, die Sie für den Importieren von VueFormjson -Schema wie folgt verwenden möchten:
import VueFormJsonSchema from 'vue-form-json-schema/dist/vue-form-json-schema.esm.js' ;Schauen Sie sich die Demos an oder sehen Sie sich ein minimales Beispiel in den Verwendungsanweisungen an, um loszulegen.
Wenn Sie die UMD -Version verwenden, finden Sie weitere Beispiele im
examples-Ordner des Github Repo und der UMD -Demo unten.
Wenn Sie vue-form-json-schema direkt in einem Browser verwenden möchten, können Sie dies mit der UMD-Version verwenden. Die UMD-Version wird automatisch die vue-form-json-schema Komponente, wenn Vue im Fenster gefunden wird. Das gesamte Modul ist auch unter window.VueFormJsonSchema verfügbar, auf dem die benannten Exporte wie zum Beispiel vfjsFieldMixin zugegriffen werden können.
<script src="https://unpkg.com/vue-form-json-schema@latest/dist/vue-form-json-schema.umd.js"></script>
Sie können vue-form-json-schema@latest einer festen Version wie [email protected] ersetzen
<script src="../node_modules/dist/vue-form-json-schema.umd.js"></script>
Beachten Sie, dass alle Demos das Bootstrap -Styling verwenden, aber in diesem Paket kein Styling enthalten ist und es an Ihnen liegt, welche Stile verwendet werden sollten.
Die geringste Konfiguration, um ein input zu rendern.
Verwenden von Bootstrap -Klassen, um anzuzeigen, wie Layout für Geräte mit unterschiedlichen Bildschirmgrößen unterschiedlich sein kann. In diesem Beispiel werden zwei Eingangsfelder in ein DIV mit col-12 col-sm-6 Klassen gewickelt. Versuchen Sie, Ihr Browserfenster zu ändern, sehen Sie es auch in Aktion.
Manchmal sollte nur ein Feld angezeigt werden, wenn ein Zustand erfüllt ist. Verwendet <transition> , um Animation bereitzustellen.
Sehen Sie, wie Sie Ihre eigenen oder Dritten-Vue-Komponenten in vue-form-json-schema verwenden.
Laden des Formulars aus einem Backend? Schauen Sie sich dieses Beispiel an.
Ein vollständigeres Beispiel mit Validierungs- und Fehlermeldungen
Das obige Registrierungsformular oben, bei dem die Formularmodellschlüssel unter einem anderen Schlüssel verschachtelt sind
Alle oben genannten Beispiele werden mit der UMD -Version im examples -Ordner dieses Repo repliziert.
Online -Version der ersten Demo
32K unkomprimiert, 6.5K gziped)Gitbook
Für die Verwendung der UMD -Version
examples
Siehe Demo
< 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 >Zur Formularvalidierung mit JSON -Schema und interner Validierung
get , set und merge im gesamten Paket. Die Bündelgröße ist jedoch sehr wichtig und wird immer in Betracht gezogen, und so streifen wir Lodash stark ab, um nur die absoluten Notwendigkeiten einzubeziehen
Getestet mit v2.5.9, wird aber wahrscheinlich auf jeder Version> = v2.4.0 funktionieren
options.ajv.locale hinzugefügt.ajv.locale Einstellungvfs-global Prop ui-schemavfs-component -Prop ui-schema