2017-10-11 6 views
0

Das Problem scheint mit EJS zu sein. Ich könnte versuchen, etwas zu tun, für das EJS nicht bestimmt war.Versuch, EJS zu verwenden, um ein Bearbeitungsformular dynamisch zu rendern

Ich arbeite an einer Webanwendung, die Formulare mit einer variablen Anzahl von Feldern verwendet. Wenn ein Mongo-Dokument, das ich bearbeite, nur ein Feld hat, möchte ich keine Eingabefelder für zusätzliche Felder anzeigen.

Ich kann dynamisch steuern, wie viele Felder angezeigt werden, wenn Dokumente bearbeitet werden, aber ich kann den aktuellen Wert der Felder nicht dynamisch anzeigen.

Wenn ich den Wert-Tag wie folgt verwenden: value=<%= document.field1 %>, funktioniert es gut. Dies müsste jedoch manuell für jedes Feld wiederholt werden, einschließlich Felder, die nicht vorhanden sind.

Was ich tun möchte, ist etwas wie das: value=<%= 'document.field' + (i+1) %>. Dies würde im Idealfall den gleichen gerenderten HTML-Code erzeugen wie der obige Code. Was ich jedoch sehe, ist 'document.field1' und nicht die Daten, die ich aus der Datenbank abrufen möchte.

Antwort

0

EJS ist nur ein dünner Wrapper um JavaScript-Code. Alles, was Sie in JavaScript schreiben können, können Sie in EJS schreiben, es wird ohne Änderungen in die kompilierte Vorlage aufgenommen.

Um ein Feld mit einem dynamischen Namen zu referenzieren, verwenden Sie [] genau wie in jedem anderen JavaScript-Code. Basierend auf dem Code, den Sie zur Verfügung gestellt haben, wäre es etwa so:

value="<%= document['field' + (i + 1)] %>" 
+0

Vielen Dank. Du hast mir sehr geholfen. –

Verwandte Themen