Heim >Backend-Entwicklung >Golang >So übergeben Sie eine „unterwegs erstellte' Karte in eine Go-Vorlage

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

WBOY
WBOYnach vorne
2024-02-05 23:39:03634Durchsuche

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>

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>

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

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
}

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

t.Funcs(template.FuncMap{"M":MakeMap})

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen