变量在部分中不可见

时间:2015-04-18 12:50:48

标签: templates go

为什么我的title对象的page属性未在标题模板中填充?

这是我的小程序

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>
&copy; 2015
</footer>
</body>
</html>

模板/ post.html模板中的.Body变量已填充,但templates / header.html模板中的.Title为空,我认为这是因为它是部分的,从另一个模板渲染...

如何使这项工作?

我将完整的上述示例发布为gist

1 个答案:

答案 0 :(得分:3)

{{template "header.html"}}表格不会传递任何数据。

请尝试{{template "header.html" .}}

有关详细信息,请参阅text/template的“操作”部分。