2014-09-29 13 views
10

Ich habe eine SimpleSchema, die eine Reihe von Objekten umfassen:Meteor: Benutzerdefinierte Autoform mit Array von Objekten

Things.attachSchema(new SimpleSchema({ 
    name: { 
     type: String, 
     label: "Name", 
     max: 50 
    }, 
    fields: { 
     type: [Object], 
    }, 
    fields.$.name: { 
     type: String 
    }, 
    fields.$.amount: { 
     type: Number 
    } 
})) 

Ich versuche, benutzerdefiniertes Formular erstellen Verwendung von afEachArrayItem machen, aber ich kann nicht herausfinden, wie um auf die Attribute jedes Objekts innerhalb des Arrays zu verweisen.

Meine Vorlage sieht wie folgt aus (mit html gezupft):

{{#autoForm collection="things" id="myForm" }} 
    {{> afQuickField name='schemaName'}} 

    {{#afEachArrayItem name="fields"}} 

     {{> afFieldInput name="name"} 
     {{> afFieldInput name="amount"} 

    {{/afEachArrayItem}} 

{{/autoForm}} 

Was "name" in den afFieldInputs weitergegeben werden sollte?

this.current 

So zu beheben, um das oben genannte Beispiel, Verwendung:

Antwort

12

Um die Felder der Objekte innerhalb des Arrays zuzugreifen, können Sie verwenden

{{#autoForm collection="things" id="myForm" }} 
    {{> afQuickField name='schemaName'}} 

    {{#afEachArrayItem name="fields"}} 

     {{> afFieldInput name=this.current.name}} 
     {{> afFieldInput name=this.current.amount}} 

    {{/afEachArrayItem}} 

{{/autoForm}} 

Ich weiß nicht, ob dies ist die richtige Weise, dies zu tun, aber es scheint zu funktionieren.

+0

Wie fügen Sie eine neue Zeile hinzu? – ardochhigh

+1

Downvoted: Diese Lösung lässt den Teil der Vorlage aus, der das Hinzufügen neuer Elemente zum Array ermöglicht. – rodamn

+0

@rodamn, wie würden Sie den Teil der Vorlage hinzufügen, mit dem neue Elemente zum Array hinzugefügt werden können? – bwobst

4

Sie können Schaltflächen hinzufügen hinzufügen/entfernen Sie die Array-Elemente wie so:

{{#autoForm collection="things" id="myForm" }} 
    {{> afQuickField name='schemaName'}} 

    {{#afEachArrayItem name="fields"}} 

     <button type="button" class="btn btn-primary autoform-remove-item"><span class="glyphicon glyphicon-minus"></span></button> 
     {{> afFieldInput name=this.current.name}} 
     {{> afFieldInput name=this.current.amount}} 

    {{/afEachArrayItem}} 
    <button type="button" class="btn btn-primary autoform-add-item" data-autoform-field="fields"><span class="glyphicon glyphicon-plus"></span></button> 

{{/autoForm}} 

Dies ist die eingebaute Tasten und Symbole für Autoform verwenden, so fühlen sich frei, um die HTML nach Bedarf zu ändern.

+0

Ich bekomme das AutoForm-Add-Item nicht so, wie du es beschreibst. Gibt es noch andere Parameter, die gesetzt werden müssen? – LPG

+1

@ LPG müssen Sie die Attributdaten-AutoForm-Feld = "Felder" zu korrigieren Array (d. H. Ändern Sie die _fields_) – iiro

+0

Dank @iiro, die perfekt funktioniert. – LPG

Verwandte Themen