假设我有两个文本文件(去模板):
child.tmpl
TEXT1
Hello {{ . }}
top.tmpl
TEXT2
{{ template "child.tmpl" "argument"}}
child.tmpl
模板嵌套在top.tmpl
解析它们的典型程序是:
package main
import (
"os"
"text/template"
)
func main() {
t := template.Must(template.ParseFiles("child.tmpl", "top.tmpl")
t.ExecuteTemplate(os.Stdout, "top.tmpl", nil)
}
是否有任何方法使用{{ . }}
表示法将模板作为参数传递给顶级模板?
像{{ template {{.}} "argument" }}
答案 0 :(得分:2)
有两种方法可以解决您的问题:
第一个涉及编写您自己的模板包含函数,并通过template.FuncMap
将您的模板注册为template.Funcs
。
另一种方法是在子模板中使用{{define xxx}}
块。然后,您可以有两个不同的文件来定义相同的模板:
{{define body}}...{{end}}
{{define body}}...{{end}}
根据您的需要解析正确的文件,并在父模板中执行{{template body "argument"}}
。
在我看来,第一种选择更灵活。