首頁 >後端開發 >Golang >在 Go 模板中,如何將資料從父模板傳遞到子模板?

在 Go 模板中,如何將資料從父模板傳遞到子模板?

DDD
DDD原創
2024-10-26 03:08:27250瀏覽

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

在範本之間傳遞資料

您的查詢涉及將資料從一個範本傳遞到另一個範本。您有一個包含子模板 (image_row.html) 的父模板 (index.html),但希望將其他資料傳遞給子模板。

範本的預設行為僅允許父範本中定義的資料才能傳遞給孩子。但是,您可以透過採用一些技術來實現您的目標:

對多個參數使用函數

一種方法是定義一個函數,將您的參數聚合為一個函數切片值。然後,您可以註冊此函數並在模板中呼叫它。

例如:

import "text/template"

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

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

在index.html中:

{{ template "image_row" args . 5 }}

image_row.html:

{{ define "image_row" }}
   Data: {{ index . 0 }} {{ index . 1 }}
{{ end }}

在image_row.html:

{{ index . 0 }} -> .
{{ index . 1 }} -> 5

這允許您使用索引函數存取子範本中的參數:

其他方法

  • 或者,您可以考慮:
  • 使用自訂模板函數:在父模板中定義自訂函數,為子模板產生必要的資料。
傳遞結構體或映射:

建構一個結構體或映射來聚合資料並將其傳遞給子模板。

以這種方式自訂資料傳遞機制可以讓您靈活地控制資料如何在範本之間共用。

以上是在 Go 模板中,如何將資料從父模板傳遞到子模板?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn