Golang 从包含的模板访问模板变量
Golang Accessing Template Variables From Included Templates
在 golang 中,我正在处理三个文件: index.html、nav.html 和 main.go
nav.html 包含以下内容:
{{ define "nav" }}
<nav class="nav-container">
<h1>{{ .path }}</h1>
</nav>
{{ end }}
index.html 包含以下内容:
{{ define "index" }}
{{ template "nav" }} <!-- Includes the nav.html file -->
<h1>Welcome to my website. You are visiting {{ .path }}.</h1>
{{ end }}
我使用的是 Golang 的 template package along with Martini,在这种情况下这不是太重要。
我的 main.go 文件包含:
package main
import (
"net/http"
"github.com/go-martini/martini"
"github.com/martini-contrib/render"
)
func main() {
m := martiniSetup()
m.Get("/", func(res http.ResponseWriter, req *http.Request, ren render.Render, params martini.Params) {
parse := make(map[string]interface{})
parse["path"] = req.URL.Path
ren.HTML(http.StatusOK, "index", parse)
})
m.Run()
}
我的问题:
解析到 index
模板中的 .path
变量只能由 index
模板本身访问。
我在 index.html
中包含了使用 {{ template "nav" }}
的 nav
模板。问题是,nav.html
无法访问 .path 变量。它只能通过索引模板访问。
有什么方法可以让所有包含的模板文件都可以访问 .path
变量,在我的例子中是 index.html
和 nav.html
?
您可以像这样将数据作为参数传递给嵌套模板:{{ template "nav" . }}
现在可以在 define "nav"
块中访问该点。
在 golang 中,我正在处理三个文件: index.html、nav.html 和 main.go
nav.html 包含以下内容:
{{ define "nav" }}
<nav class="nav-container">
<h1>{{ .path }}</h1>
</nav>
{{ end }}
index.html 包含以下内容:
{{ define "index" }}
{{ template "nav" }} <!-- Includes the nav.html file -->
<h1>Welcome to my website. You are visiting {{ .path }}.</h1>
{{ end }}
我使用的是 Golang 的 template package along with Martini,在这种情况下这不是太重要。
我的 main.go 文件包含:
package main
import (
"net/http"
"github.com/go-martini/martini"
"github.com/martini-contrib/render"
)
func main() {
m := martiniSetup()
m.Get("/", func(res http.ResponseWriter, req *http.Request, ren render.Render, params martini.Params) {
parse := make(map[string]interface{})
parse["path"] = req.URL.Path
ren.HTML(http.StatusOK, "index", parse)
})
m.Run()
}
我的问题:
解析到 index
模板中的 .path
变量只能由 index
模板本身访问。
我在 index.html
中包含了使用 {{ template "nav" }}
的 nav
模板。问题是,nav.html
无法访问 .path 变量。它只能通过索引模板访问。
有什么方法可以让所有包含的模板文件都可以访问 .path
变量,在我的例子中是 index.html
和 nav.html
?
您可以像这样将数据作为参数传递给嵌套模板:{{ template "nav" . }}
现在可以在 define "nav"
块中访问该点。