2015-05-05 12 views
6

Nel mio progetto angolare ho bisogno di creare alcune forme dinamicamente. Ho fatto qualche ricerca su google per questo e ho trovato un modulo angular-schema-form. Sembra che questo sia esattamente quello che voglio, ma il problema è che non capisco come mantenere schema e forma. Qual è la relazione tra schema e forma?Qual è la relazione tra schema e forma in forma di schema angolare?

Ho letto la documentazione dal form types ma non è molto utile per me. Non voglio usare questo modulo come HIT e TRY. Voglio prima capire il concetto: qual è la relazione tra schema e forma?

+0

la tua domanda non è chiara. Non sei sicuro di quale JSON-Schema (il formato del modulo che stai chiedendo)? http://json-schema.org/. – Claies

+0

alcuni frammenti di codice dalla pagina github modulo-schema angolare. 'var schema = { " tipo ":" oggetto ", " proprietà ": { " cognome ": {" tipo ":" stringa "}, " nome ": {" tipo ":" stringa "} , }} // per la forma [ "Nome", "cognome" ] ' Qui array è per la forma e l'oggetto è per lo schema. Stanno usando alcune convenzioni per il rendering dell'html. come tipo stringa o testo per casella di input, cosa succede se voglio usare come etichetta, un'altra opzione è template invece di testo, qui non so come associare questo template html con il valore del modello. [1/2] –

+0

[vedi qui] (https://github.com/Textalk/angular-schema-form/blob/development/docs/index.md#overriding-field-types-and-order) [ 2/2] –

risposta

10

Per cercare di affrontare la questione di fondo:

Qual è la relazione tra schema e forma?

Per mettere le cose in termini semplici, forse è più facile pensarla così. Per creare il modulo, hai tre pezzi di JSON:

  • Il JSON contenente i dati effettivi presentati tramite il modulo. Questo è il model.

  • The JSON schema. Questo descrive la struttura dello model. Per dare un esempio estremamente semplice della relazione tra model e schema, immagina i tuoi dati effettivi (il tuo model) descrivono una persona in termini di sesso ed età, come ad esempio {sex: female, age: 32}. Il ruolo dello schema consiste nel descrivere la struttura del modello, quindi in questo caso descriverebbe una proprietà di tipo stringa sex il cui valore può essere solo male o female e che esiste una proprietà age e quindi sopra. Per essere in grado di presentare un modulo che viene popolato utilizzando i dati model, è sufficiente disporre di schema per creare il modulo in primo luogo.

  • Il JSON form è qualcosa che ritengo sia opzionale. È necessario averlo, ma può semplicemente contenere "*", che indica a angular-schema-form di compilare il modulo automaticamente in base allo schema. In questo caso, la libreria compilerà il modulo interamente basato sullo schema e utilizzando le impostazioni predefinite come descritto nella documentazione. Ma quello che puoi fare, se vuoi, è usare l'oggetto form per descrivere come vuoi che il tuo modulo sia strutturato.

Ecco un esempio molto grezzo e molto semplice della flessibilità dell'oggetto form consente di:

Prendendo l'esempio person oggetto precedente, se non si fanno uso dell'oggetto form (cioè solo contiene "*") quindi angular-schema-form creerà un modulo basato sullo schema. Avrebbe quindi campi di input per sex e age. Questi campi possono o non possono essere nel formato, nell'ordine o avere altre proprietà che si desidera. È quindi possibile utilizzare l'oggetto form facoltativamente per indicare a angular-schema-form come si desidera che il modulo venga creato. Ad esempio, è possibile utilizzare form per fare in modo che il modulo contenga solo un campo per age ma non sex.

Quindi il model è i tuoi dati e il schema descrive la struttura di tali dati. In termini semplicistici, lo form fornisce un ulteriore livello di mappatura e configurazione al modulo, sovrascrivendo il modulo predefinito che verrebbe creato sulla base del solo schema.

Questo aiuto?

+0

sì, questo è molto utile per me, come hai chiarito il mio dubbio che la forma è solo un livello opzionale. Stavo indovinando lo stesso, ma non sono sicuro sulla mia ipotesi. Ho esplorato lo stesso e trovato le proprietà nell'oggetto dello schema sono le chiavi nell'array del modulo e l'array del modulo è solo per sovrascrivere il tipo predefinito. Oggi tutto il giorno ho fatto google su questo e ho trovato la soluzione quello che voglio. frammento di codice [1/2] [2/2]

+0

'$ scope.schema = { tipo: "oggetto", proprietà: { nome: {tipo: "stringa"} } }; $ scope.form = [ { tipo: "modello", modello: '

Yo {{model.name}}!

', foo: function() {console.log (' oh noes! '); }} , { \t tipo: "testo", \t chiave: "nome" } ]; $ scope.model = {name: "questo è per test"}; ' possiamo anche associare il modello con il modello questo è ciò che voglio. –

+0

Come risposta chiara il mio dubbio. Quindi lo segnalo come una risposta accettata –

Problemi correlati