我正在尝试从双父上下文中访问变量。 我的代码是:
dot
是ColumnBlock
:
// template content
<h4>{{.Global}}</h4> // he is fine
...
<div class="row">
<div class="col-12">{{template "column" .LeftColumn}}</div>
<div class="col-12">{{template "column" .RightColumn}}</div>
</div>
// template column
{{range .Columns}}
<div id="x-{{$.Kind}}-{{.ID}}">{{.Text}} - {{$.Global}}</div> // here Global is unavailable.
{{end}}
转到:
type Column struct {
ID int
Text string
}
type ColumnList struct {
Kind string
Columns []Column
}
type ColumnBlock struct {
Global bool
LeftColumn ColumnList
RightColumn ColumnList
}
如何从.Global
访问column template
变量?
示例:PLAYGROUND
答案 0 :(得分:0)
来自https://golang.org/pkg/text/template/#hdr-Variables:
模板调用不会从其中继承变量 调用
但是,您可以通过注册函数来模拟全局变量。
t := template.Must(template.New("main").
Funcs(template.FuncMap{
"Global": func() string {return "true"},
}).
Parse(`...`))
然后在您的模板代码中,只需使用{{Global}}
,即可访问“全局”值。