Generator bentuk berbasis skema JSON, bawa komponen Anda!
Tidak ada komponen prebuilt untuk Anda teka -teki bersama. Sebaliknya, Anda dapat menggunakan komponen atau elemen apa pun yang memancarkan acara, khusus atau asli.
Perhatikan bahwa pada dasarnya semua komponen VUE yang menggunakan
v-modelmemancarkan peristiwainput(atau serupa). Lihat Panduan Vue untuk info lebih lanjut
Instal dari NPM
npm install vue-form-json-schema
Impor ke aplikasi Anda
import Vue from 'vue' ;
import VueFormJsonSchema from 'vue-form-json-schema' ;
Vue . component ( 'vue-form-json-schema' , VueFormJsonSchema ) ;CATATAN Jika Anda tidak menggunakan Webpack / Rollup dan ingin menggunakan versi ESM, Anda perlu mengimpor VueformjSonschema seperti ini:
import VueFormJsonSchema from 'vue-form-json-schema/dist/vue-form-json-schema.esm.js' ;Lihatlah demo atau lihat contoh minimal dalam instruksi penggunaan untuk memulai.
Jika Anda menggunakan versi UMD, Anda dapat menemukan lebih banyak contoh di folder
examplesRepo GitHub dan demo UMD di bawah ini.
Jika Anda ingin menggunakan vue-form-json-schema langsung di browser, Anda dapat melakukannya dengan menggunakan versi UMD. Versi UMD AutoInstalls komponen vue-form-json-schema jika Vue ditemukan di jendela. Seluruh modul juga tersedia di window.VueFormJsonSchema di mana ekspor bernama seperti misalnya vfjsFieldMixin dapat diakses.
<script src="https://unpkg.com/vue-form-json-schema@latest/dist/vue-form-json-schema.umd.js"></script>
Anda dapat mengganti vue-form-json-schema@latest ke versi tetap, seperti [email protected]
<script src="../node_modules/dist/vue-form-json-schema.umd.js"></script>
Perhatikan bahwa semua demo menggunakan gaya bootstrap, tetapi tidak ada gaya yang termasuk dalam paket ini dan terserah Anda gaya apa yang harus digunakan.
Konfigurasi paling sedikit untuk membuat elemen input .
Menggunakan kelas bootstrap untuk menunjukkan bagaimana tata letak dapat berbeda untuk perangkat dengan ukuran layar yang berbeda. Dalam contoh ini dua bidang input akan dibungkus di dalam div dengan kelas col-12 col-sm-6 . Coba mengubah ukuran jendela browser Anda juga melihatnya beraksi.
Terkadang bidang hanya boleh ditampilkan jika suatu kondisi terpenuhi. Penggunaan <transition> untuk memberikan animasi.
Lihat cara menggunakan komponen Vue pihak ketiga atau ketiga di vue-form-json-schema .
Memuat formulir dari backend? Lihat contoh ini.
Contoh yang lebih lengkap dengan pesan validasi dan kesalahan
Formulir pendaftaran di atas di mana kunci model formulir bersarang di bawah kunci lain
Semua contoh di atas direplikasi menggunakan versi UMD di folder examples repo ini.
Versi online dari demo pertama
32K tidak terkompresi, 6.5K Gzipped)Gitbook
Untuk menggunakan versi UMD, lihat folder
examplesdi mana semua demo di atas direplikasi menggunakan versi UMD
Lihat 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 >Untuk validasi formulir menggunakan skema JSON dan validasi internal
get , set dan merge digunakan di seluruh paket. Ukuran bundel sangat penting dan selalu dipertimbangkan dan jadi kami sangat menghapus Lodash untuk hanya memasukkan kebutuhan absolut
Diuji dengan v2.5.9 tetapi mungkin akan bekerja pada versi apa pun> = v2.4.0
options.ajv.locale pengaturanvfs-global Prop ui-schemavfs-component prop ui-schema