通过Golang中的模板解析自定义变量

时间:2017-05-10 03:26:09

标签: go go-templates template-variables

我是否可以在模板文件{{$title := "Login"}}中设置变量,然后将其解析为使用{{template "header" .}}包含的其他文件?

我正在尝试的一个例子:

header.tmpl

{{define "header"}}
<title>{{.title}}</title>
{{end}}

login.tmpl

{{define "login"}}
<html>
    <head>
        {{$title := "Login"}}
        {{template "header" .}}
    </head>
    <body>
        Login Body!
    </body>
</html>
{{end}}

如何解析我通过标题模板制作的自定义$ title变量?

2 个答案:

答案 0 :(得分:1)

不,它是不可能的解析变量到另一个文件。

根据this

  

变量的范围扩展到&#34; end&#34;控制结构的动作(&#34;如果&#34;,&#34;用&#34;或&#34;范围&#34;)声明它,或者如果有的话,到模板的末尾没有这样的控制结构。 模板调用不会从调用点继承变量。

答案 1 :(得分:1)

正如@zzn所说,不可能从一个不同的模板中引用一个变量。

实现目标的一种方法是定义一个模板 - 从一个模板传递到另一个模板。

<强> header.html中 {{define "header"}} <title>{{template "title"}}</title> {{end}}

<强>的login.html {{define "title"}}Login{{end}} {{define "login"}} <html> <head> {{template "header" .}} </head> <body> Login Body! </body> </html> {{end}}

当您调用“标题”模板({{template header $title}}或甚至{{template header "index"}})时,您也可以将标题作为管道传递,但这会阻止您将任何其他内容传递给该模板。< / p>