Saya ingin membuat sesuatu seperti komponen UI 100% boleh diguna semula dalam templat Go, tetapi saya tidak tahu sama ada ia boleh dilakukan. Jadi saya cuba lakukan langkah seterusnya:
<code>{{define "components/menu-button"}} <a href="{{.link}}" class="text-white">{{.content}}</a> {{end}} </code>
Ini adalah komponen saya, ia memerlukan map
kerana sifatnya adalah huruf kecil.
Kemudian dalam halaman utama saya, saya mempunyai menu kecil yang menggunakan components/menu-button
komponen 3 kali dalam bar navigasi saya:
<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>
Tetapi saya tidak tahu sama ada saya boleh mencipta satu map
seperti yang saya lakukan dalam contoh, ia akan menjadi seperti JSON, tetapi saya mencuba.
Dengan cara ini, ia memberi saya ralat seterusnya:
unexpected "{" in template clause
Templat Go tidak menyokong sintaks ini.
Apa yang anda boleh lakukan ialah mengisytiharkan fungsi tersuai seperti
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 }
Kemudian anda boleh menggunakan 使该函数可用于模板(*模板).Funcs
, sebagai contoh
t.Funcs(template.FuncMap{"M":MakeMap})
Kemudian, dalam templat, anda boleh memanggil fungsi menggunakan kekunci M
.
{{template "components/menu-button" (M "link" "/contact" "content" "Contact")}}
https://www.php.cn/link/0740bb92e583cd2b88ec7c59f985cb41
Atas ialah kandungan terperinci Cara menghantar peta 'dicipta dalam perjalanan' dalam templat Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!