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 map
wie 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
Gos Vorlagen unterstützen diese Syntax nicht.
Was Sie tun können, ist eine benutzerdefinierte Funktion wie
zu deklarierenfunc 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!