Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Meluluskan Berbilang Nilai kepada Tindakan {{template}} Templat?

Bagaimana untuk Meluluskan Berbilang Nilai kepada Tindakan {{template}} Templat?

Mary-Kate Olsen
Lepaskan: 2024-12-05 20:38:13
asal
775 orang telah melayarinya

How to Pass Multiple Values to Go Templates' {{template}} Action?

Melalui Berbilang Nilai Antara Templat

Dalam templat Go, tindakan {{template}} hanya mengambil satu hujah pilihan. Untuk menghantar berbilang nilai, ia mesti dirangkumkan dalam satu nilai.

Data Mengekapkan

Satu pendekatan ialah menggunakan fungsi pembalut yang menerima nilai yang dikehendaki dan mengembalikan nilai tunggal. Sebagai contoh, kami boleh mencipta fungsi pembungkus untuk data Bandar dan Wilayah kami:

func Wrap(shops []Destination, cityName, regionName string) map[string]interface{} {
    return map[string]interface{}{
        "Shops":      shops,
        "CityName":   cityName,
        "RegionName": regionName,
    }
}
Salin selepas log masuk

Mendaftarkan Fungsi Pembungkus

Fungsi tersuai boleh didaftarkan menggunakan Templat.Fungsi (). Ini mesti dilakukan sebelum menghuraikan templat:

t := template.Must(template.New("cities.gohtml").Funcs(template.FuncMap{
    "Wrap": Wrap,
}).Parse(src))
Salin selepas log masuk

Templat Diubah Suai

Templat kemudiannya boleh diubah suai untuk memanggil fungsi Wrap() dan menghantar hasilnya kepada {{template}} tindakan:

{{define "data"}}
    City: {{.CityName}}, Region: {{.RegionName}}, Shops: {{.Shops}}
{{end}}
{{- range . -}}
        {{$city:=.Name}}
        {{- range .Regions -}}
              {{$region:=.Name}}
              {{- template "data" (Wrap .Shops $city $region) -}}
        {{end}}
{{- end}}
Salin selepas log masuk

Contoh

Berikut ialah contoh menggunakan struktur Bandar dan Wilayah yang disediakan dalam soalan:

t := template.Must(template.New("cities.gohtml").Funcs(template.FuncMap{
    "Wrap": Wrap,
}).Parse(src))
CityWithSomeData := []City{
    {
        Name: "CityA",
        Regions: []Region{
            {Name: "CA-RA", Shops: []Destination{{"CA-RA-SA"}, {"CA-RA-SB"}}},
            {Name: "CA-RB", Shops: []Destination{{"CA-RB-SA"}, {"CA-RB-SB"}}},
        },
    },
    {
        Name: "CityB",
        Regions: []Region{
            {Name: "CB-RA", Shops: []Destination{{"CB-RA-SA"}, {"CB-RA-SB"}}},
            {Name: "CB-RB", Shops: []Destination{{"CB-RB-SA"}, {"CB-RB-SB"}}},
        },
    },
}
if err := t.ExecuteTemplate(os.Stdout, "cities.gohtml", CityWithSomeData); err != nil {
    panic(err)
}
Salin selepas log masuk

Output:

City: CityA, Region: CA-RA, Shops: [{CA-RA-SA} {CA-RA-SB}]
City: CityA, Region: CA-RB, Shops: [{CA-RB-SA} {CA-RB-SB}]
City: CityB, Region: CB-RA, Shops: [{CB-RA-SA} {CB-RA-SB}]
City: CityB, Region: CB-RB, Shops: [{CB-RB-SA} {CB-RB-SB}]
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Berbilang Nilai kepada Tindakan {{template}} Templat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan