Голанг шаблон двойного родительского контекста - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь получить доступ к переменной из контекста двойного родителя.Мой код:

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

go:

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 голосов
/ 04 июня 2018

С 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...