golang模板双父上下​​文

时间:2018-06-04 18:19:18

标签: go

我正在尝试从双父上下文中访问变量。 我的代码是:

dotColumnBlock

// 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

1 个答案:

答案 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}},即可访问“全局”值。

https://play.golang.org/p/oOmWqOIKFx5