我知道在Ruby中可以渲染带有附加参数的部分模板,我怎么能在Go中做到?
我有一个部分模板width
:
.banner-dropdown
在父模板_partial1.tmpl
中使用它:
<div>
text1
{{if foo}}
text2
{{end}}
</div>
如何将参数parent.tmpl
传递给部分?
答案 0 :(得分:4)
documentation表示template
指令有两种形式:
{{template "name"}}
执行具有指定名称的模板 没有数据。<强>
{{template "name" pipeline}}
强>
具有指定名称的模板是 执行点设置为管道的值。
后者接受一个管道语句,然后将其值设置为执行模板中的dot
值。所以打电话
{{template "partial1" "string1"}}
会在{{.}}
模板中将"string1"
设置为partial1
。因此,虽然无法在局部中设置名称foo
,但您可以传递参数,它们将显示在.
中。例如:
<div>
{{ template "partial1.html" "muh"}} // how do I pass foo param here??
</div>
{{if eq . "muh"}}
blep
{{else}}
moep
{{end}}
import (
"html/template"
"fmt"
"os"
)
func main() {
t,err := template.ParseFiles("template.html", "partial1.html")
if err != nil { panic(err) }
fmt.Println(t.Execute(os.Stdout, nil))
}
运行此程序将使用部分中的blep
打印模板的内容。更改传递的值将改变此行为。
您也可以分配变量,因此可以在部分中为.
分配foo
:
{{ $foo := . }}