Bagaimanakah anda boleh menghantar data daripada templat induk kepada templat anak dalam templat Go?

DDD
Lepaskan: 2024-10-26 03:08:27
asal
129 orang telah melayarinya

How can you pass data from a parent template to a child template in Go templates?

Melalui Data Antara Templat

Pertanyaan anda melibatkan pemindahan data dari satu templat ke templat yang lain. Anda mempunyai templat induk (index.html) termasuk templat anak (image_row.html) tetapi ingin menghantar data tambahan kepada anak.

Tingkah laku lalai templat membenarkan hanya data yang ditakrifkan dalam templat induk untuk disampaikan kepada anak. Walau bagaimanapun, anda boleh mencapai matlamat anda dengan menggunakan beberapa teknik:

Menggunakan Fungsi untuk Berbilang Argumen

Satu pendekatan ialah mentakrifkan fungsi yang mengagregatkan hujah anda menjadi satu nilai hirisan. Anda kemudiannya boleh mendaftarkan fungsi ini dan menggunakannya dalam templat.

Sebagai contoh:

import "text/template"

func args(vs ...interface{}) []interface{} { return vs }

t, err := template.New("t").Funcs(template.FuncMap{"args": args}).Parse(...)
Salin selepas log masuk

Dalam index.html:

{{ template "image_row" args . 5 }}
Salin selepas log masuk

Dalam image_row.html:

{{ define "image_row" }}
   Data: {{ index . 0 }} {{ index . 1 }}
{{ end }}
Salin selepas log masuk

Ini membolehkan anda mengakses hujah anda dalam templat anak menggunakan fungsi indeks:

{{ index . 0 }} -> .
{{ index . 1 }} -> 5
Salin selepas log masuk

Pendekatan Lain

Sebagai alternatif, anda boleh pertimbangkan:

  • Menggunakan fungsi templat tersuai: Tentukan fungsi tersuai dalam templat induk yang menjana data yang diperlukan untuk kanak-kanak.
  • Melalui struct atau peta: Bina struct atau peta untuk mengagregat data dan hantarkannya ke templat anak.

Memperibadikan mekanisme penghantaran data dengan cara ini memberikan anda kefleksibelan dan kawalan ke atas cara data dikongsi antara templat.

Atas ialah kandungan terperinci Bagaimanakah anda boleh menghantar data daripada templat induk kepada templat anak dalam templat Go?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!