英文:
Variable not visible in partial
问题
为什么我的page
对象的title
属性在头部模板中没有填充?
这是我的一个小型Go程序:
package main
import (
"html/template"
"os"
)
type Page struct {
Title string
Body string
}
func main() {
f, _ := os.Create("index.html")
defer f.Close()
page := Page{"I'm the title", "And I'm the body"}
t := template.New("post.html")
t = template.Must(t.ParseGlob("templates/*html"))
t.Execute(f, page)
}
这是templates/post.html
文件的内容:
{{template "header.html"}}
<article>
{{.Body}}
</article>
{{template "footer.html"}}
这是templates/header.html
文件的内容:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>{{.Title}}</title>
</head>
<body>
为了完整起见,这是templates/footer.html
文件的内容:
<footer>
© 2015
</footer>
</body>
</html>
模板templates/post.html
中的.Body
变量被填充了,但是模板templates/header.html
中的.Title
为空,我认为这是因为它是从另一个模板渲染的局部模板...
如何使其工作?
我将完整的示例发布在gist上。
英文:
Why is the title
attribute of my page
object not populated in the header template ?
here is my small go program
package main
import (
"html/template"
"os"
)
type Page struct {
Title string
Body string
}
func main() {
f, _ := os.Create("index.html")
defer f.Close()
page := Page{"I'm the title", "And I'm the body"}
t := template.New("post.html")
t = template.Must(t.ParseGlob("templates/*html"))
t.Execute(f, page)
}
here is the templates/post.html file:
{{template "header.html"}}
<article>
{{.Body}}
</article>
{{template "footer.html"}}
and my templates/header.html file:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>{{.Title}}</title>
</head>
<body>
for the sake of completeness, my footer, templates/footer.html file:
<footer>
&copy; 2015
</footer>
</body>
</html>
The .Body variable in the templates/post.html template is filled, but the .Title in the templates/header.html template is empty, I think it's because it's a partial, rendered from another template...
How to make this work ?
I posted the complete above example as a gist
答案1
得分: 5
{{template "header.html"}}
表单没有传递任何数据。
尝试使用 {{template "header.html" .}}
替代。
有关详细信息,请参阅 text/template
的“Actions”部分。
英文:
The {{template "header.html"}}
form doesn't pass any data.
Try {{template "header.html" .}}
instead.
See the Actions section of text/template
for details.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论