Разбор пользовательских переменных через шаблоны в Golang
Могу ли я установить переменную в файле шаблона? {{$title := "Login"}}
затем проанализируйте его в другом файле, используя {{template "header" .}}
?
Пример того, что я пытаюсь:
header.tmpl
{{define "header"}}
<title>{{.title}}</title>
{{end}}
login.tmpl
{{define "login"}}
<html>
<head>
{{$title := "Login"}}
{{template "header" .}}
</head>
<body>
Login Body!
</body>
</html>
{{end}}
Как я могу разобрать эту пользовательскую переменную $ title, которую я сделал, к моему шаблону заголовка?
2 ответа
Как сказал @zzn, невозможно ссылаться на переменную в одном шаблоне из другого.
Один из способов добиться того, чего вы хотите - это определить шаблон, который будет передаваться из одного шаблона в другой.
header.html
{{define "header"}}
<title>{{template "title"}}</title>
{{end}}
login.html
{{define "title"}}Login{{end}}
{{define "login"}}
<html>
<head>
{{template "header" .}}
</head>
<body>
Login Body!
</body>
</html>
{{end}}
Вы также можете пройти через заголовок в качестве конвейера, когда вы вызываете шаблон заголовка ({{template header $title}}
или даже {{template header "index"}}
), но это не позволит вам передать что-либо еще в этот шаблон.
Нет, невозможно проанализировать переменную до другого файла.
в соответствии с этим:
Область действия переменной распространяется на действие "end" структуры управления ("if", "with" или "range"), в которой она объявлена, или до конца шаблона, если такой структуры управления нет. Вызов шаблона не наследует переменные с момента его вызова.