Использую шаблоны в Go, вложенные один в другой. Использую переменные в обоих шаблонах. В корневом шаблоне значения подставляются, во вложенном - нет. Что делаю не так?
Корневой шаблон (
main_container.tpl):
<!DOCTYPE html>
<html>
<head>
<title>{{ .Title}}</title>
</head>
<body>
<header>
<div id="logo"></div>
</header>
<main>
{{template "content"}}
</main>
</body>
</html>
Вложенный шаблон (
index.tpl):
{{define "content"}}
<div class="categories_select">
<ul>
{{range .Categories}}
<li>{{ .Name}}</li>
{{end}}
</ul>
</div>
{{end}}
Часть кода, который парсит и выводит шаблон:
t, err := template.ParseFiles("templates/main_container.tpl", "templates/index.tpl")
log.Println("Template: ", t.Tree)
if err != nil {
log.Println("Template err: ", err.Error())
} else {
err = t.Execute(w, templates.GetIndexData())
if err != nil {
log.Println("Template execute err: ", err.Error())
}
}
Результат:
<!DOCTYPE html>
<html>
<head>
<title>Vitima - Главная</title>
</head>
<body>
<header>
<div id="logo"></div>
</header>
<main>
<div class="categories_select">
<ul>
</ul>
</div>
</main>
</body>
</html>
Видно, что значение для
{{ .Title}} подставилось. А значение для
{{ .Name}} во вложенном шаблоне не подставилось. Хотя, когда все это было в одном шаблоне - работало, как часы.