Übergabe von Daten an gerenderte Vorlagen in Go
In Go-Vorlagen ist das Einschließen einer anderen Vorlage ein unkomplizierter Prozess mit der {{ Vorlage „include-“ „Vorlagenname“ }} Syntax. Manchmal ist es jedoch erforderlich, zusätzliche Daten an die enthaltene Vorlage zu übergeben.
Einführung in die dynamische Parameterübergabe
Stellen Sie sich ein Szenario vor, in dem Sie eine Zahl an eine Vorlage übergeben möchten , „image_row.html“, das diese Nummer verwendet, um Zeilen dynamisch zu erstellen. Dies erfordert die Übergabe der Zahl als zusätzliches Argument an den Vorlagenaufruf.
Benutzerdefinierte Funktion zur Übergabe mehrerer Argumente
Da es keine integrierte Unterstützung für die Übergabe mehrerer Argumente gibt Wenn Sie eine Vorlage verwenden, können Sie eine benutzerdefinierte Funktion erstellen, um die Argumente in einem einzigen Segment zusammenzuführen. Registrieren Sie diese Funktion bei Funcs und verwenden Sie sie im Vorlagenaufruf:
func args(vs ...interface{}) []interface{} { return vs }
t, err := template.New("t").Funcs(template.FuncMap{"args":args}).Parse...
Verwendung im Vorlagenaufruf
Innerhalb der Hauptvorlage können Sie die Argumente mit der args-Funktion übergeben:
{{ template "image_row" args . 5 }}
Zugriff auf Argumente in der enthaltenen Vorlage
Innerhalb von „image_row.html“ können Sie mit der integrierten Indexfunktion auf die Argumente zugreifen:
{{ define "image_row" }} To stuff here {{index . 0}} {{index . 1}} {{ end }}
Dieser Ansatz ermöglicht Ihnen die Übergabe dynamischer Daten an gerenderte Vorlagen und ermöglicht so eine größere Flexibilität beim Vorlagendesign und der Datenverarbeitung.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3