html/template多layout,不能自动渲染的问题!

mia0x75 · · 1043 次点击
已经解决了,思路就是我上面说的,不用写JSON配置,那样每增加一个页面还要搞配置,忘了就挂了,这太不爽了。
#12
更多评论
polaris
社区,需要你我一同完善!
每个页面负责传递自己对应的 view 部分 html 文件,用于第二个参数吧
#1
t.ExecuteTemplate(w, "single", nil) 第二个参数使用当前页面的相对路径,且包含子目录,对上面的代码好像是可以,但是不能获取从代码传过来的数据。 改造: index.html ``` {{ template "default" }} {{ define "content" }} <div>默认页面</div> <div>{{ . }} </div> {{ end }} ``` login.html ``` {{ template "single" }} {{ define "content" }} <div>登录页面</div> <div>{{ . }} </div> {{ end }} ``` 简化partials部分的index ``` func home(w http.ResponseWriter, r *http.Request) { t, err := template.ParseFiles("templates/views/index.html", "templates/layouts/single.html", "templates/layouts/default.html") if err != nil { fmt.Println(err) } t.ExecuteTemplate(w, "default", &map[string]interface{}{ "key1": "value1", }) } ``` 第二个参数是default,浏览器显示 ``` 默认页面 map[key1:value1] ``` 第二个参数是index或者index.html,浏览器显示 ``` 默认页面 ```
#2