JSONスキーマベースのフォームジェネレーター、コンポーネントをお持ちください!
フォームを一緒にパズルするための事前に構築されたコンポーネントはありません。代わりに、カスタムまたはネイティブのイベントを発するコンポーネントまたは要素を使用できます。
v-modelを使用するすべてのVUEコンポーネントは、input(または同様の)イベントを発することに注意してください。詳細については、Vue's Guideを参照してください
NPMからインストールします
npm install vue-form-json-schema
アプリにインポートします
import Vue from 'vue' ;
import VueFormJsonSchema from 'vue-form-json-schema' ;
Vue . component ( 'vue-form-json-schema' , VueFormJsonSchema ) ;注Webpack / lollupを使用していない場合、ESMバージョンを使用したい場合は、このようなVueFormJsonschemaをインポートする必要があります。
import VueFormJsonSchema from 'vue-form-json-schema/dist/vue-form-json-schema.esm.js' ;デモを確認するか、使用開始の使用手順の最小限の例をご覧ください。
UMDバージョンを使用している場合は、GitHub Repoの
examplesフォルダーと以下のUMDデモで、より多くの例を見つけることができます。
ブラウザで直接vue-form-json-schema使用する場合は、UMDバージョンを使用してそうすることができます。 UMDバージョンは、Vueがウィンドウにある場合vue-form-json-schemaコンポーネントを自動インストールします。モジュール全体は、 window.VueFormJsonSchemaでも利用できます。たとえば、 vfjsFieldMixinなどの指名されたエクスポートにアクセスできます。
<script src="https://unpkg.com/vue-form-json-schema@latest/dist/vue-form-json-schema.umd.js"></script>
[email protected]などの固定バージョンのvue-form-json-schema@latest
<script src="../node_modules/dist/vue-form-json-schema.umd.js"></script>
すべてのデモはブートストラップスタイリングを使用していますが、このパッケージにはスタイリングが含まれておらず、どのスタイルを使用すべきかはあなた次第です。
input要素をレンダリングするための構成の最小量。
ブートストラップクラスを使用して、画面サイズが異なるデバイスでレイアウトがどのように異なるかを示します。この例ではcol-12 col-sm-6クラスを備えた2つの入力フィールドをDIV内に包みます。ブラウザウィンドウも変更してください。
条件が満たされた場合にのみフィールドを表示する必要があります。 <transition>を使用してアニメーションを提供します。
vue-form-json-schemaで独自のVue Vueコンポーネントを使用する方法をご覧ください。
バックエンドからフォームをロードしますか?この例をご覧ください。
検証とエラーメッセージを使用したより完全な例
フォームモデルキーが別のキーの下にネストされている上記の上記の登録フォーム
上記のすべての例は、このレポのexamplesフォルダーのUMDバージョンを使用して複製されます。
最初のデモのオンラインバージョン
32K圧縮なし、 6.5K gzipted)gitbook
UMDバージョンを使用するには、上記のすべてのデモがUMDバージョンを使用して複製される
examplesフォルダーをご覧ください
デモを参照してください
< 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 >JSONスキーマと内部検証を使用したフォーム検証用
パッケージ全体でget 、 set 、 mergeが使用されます。バンドルサイズは非常に重要であり、常に考慮されているため、絶対的な必需品のみを含めるためにLodashを大幅に剥ぎ取る
v2.5.9でテストされましたが、おそらく任意のバージョンで動作します> = v2.4.0
options.ajv.locale設定で1.15.2に追加されましたvfs-global Prop ui-schemavfs-component Prop ui-schema