So übergeben Sie eine „unterwegs erstellte' Karte in eine Go-Vorlage

WBOY
Freigeben: 2024-02-05 23:39:03
nach vorne
616 Leute haben es durchsucht

So übergeben Sie eine „unterwegs erstellte Karte in eine Go-Vorlage

Frageninhalt

Ich möchte so etwas wie UI-Komponenten in Go-Vorlagen zu 100 % wiederverwendbar machen, weiß aber nicht, ob das machbar ist. Also versuche ich den nächsten Schritt zu machen:

<code>{{define "components/menu-button"}}
<a href="{{.link}}" class="text-white">{{.content}}</a>
{{end}}
</code>
Nach dem Login kopieren

Dies ist meine Komponente, sie erfordert ein map, da die Eigenschaften in Kleinbuchstaben geschrieben sind.

Dann habe ich auf meiner Homepage ein kleines Menü, das components/menu-button Komponenten dreimal in meiner Navigationsleiste verwendet:

<code><div class="hidden gap-4 sm:flex">
    {{template "components/menu-button" {"link": "/contact", "content": "Contact"}}}
    {{template "components/menu-button" {"link": "/docs", "content": "Docs"}}}
    {{template "components/menu-button" {"link": "/download", "content": "Download"}}}
</div>
</code>
Nach dem Login kopieren

Aber ich weiß nicht, ob ich irgendwie eines erstellen kann mapwie ich es im Beispiel gemacht habe, es wäre wie JSON, aber ich habe es versucht.

Übrigens hat es mir den nächsten Fehler angezeigt:

unexpected "{" in template clause
Nach dem Login kopieren


Richtige Antwort


Gos Vorlagen unterstützen diese Syntax nicht.

Was Sie tun können, ist eine benutzerdefinierte Funktion wie

zu deklarieren
func MakeMap(kvs ...any) map[any]any {
    m := make(map[any]any)
    for i := 0; i < len(kvs)-1; i+=2 {
        m[kvs[i]] = kvs[i+1]
    }
    return m
}
Nach dem Login kopieren

Dann können Sie zum Beispiel 使该函数可用于模板(*模板).Funcs verwenden

t.Funcs(template.FuncMap{"M":MakeMap})
Nach dem Login kopieren

Dann können Sie innerhalb der Vorlage die Funktion mit der Taste M aufrufen.

{{template "components/menu-button" (M "link" "/contact" "content" "Contact")}}
Nach dem Login kopieren

https://www.php.cn/link/0740bb92e583cd2b88ec7c59f985cb41

Das obige ist der detaillierte Inhalt vonSo übergeben Sie eine „unterwegs erstellte' Karte in eine Go-Vorlage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage