请教gorazor模板几个基本问题: 作用域传递
smithfox opened this issue · 1 comments
smithfox commented
衡量一个模板是否好用,非 Hello World 所能反映出来的,必须在深入使用,才能体会。
我在实际使用go template 时遇到几个问题,想问问 gorazor 是什么解决的。
我都是基于 golang template 来说的.
- 作用域传递问题
parent.tpl:
{{range .Students}}
{{template "child" .}}
{{end}}
<img src="{{$.CDN}}{{.Logo}}">
child.tpl:
<p>{{.Name}}</p>
<img src="{{$.CDN}}{{.Pic}}">
xx.go
if request.URL == "" {
m.CDN = "http://cdn.xxx.com"
} else {
m.CDN = ""
}
m.Logo = "/pics/logo.png"
m.Students = []Students{{Name:"smith","Pic":"/pics/smith.jpg"},{Name:"fox","Pic":"/pics/fox.jpg"}}
render("parent.tpl", m)
具体问题: child.tpl 的 {{$.CDN}} 会报错。
本质问题: 子模板被引用后,内部的最高作用域 root 是parent传入的变量,但实际应用还需要 glob 这样的作用域
基于go template我能想到的解决方法都有问题:
- 无论多少级的引用都传 . ,保证每层的tpl的root实际是 glob,但大大减低了 复用
- 不在模板解决,而在代码层解决,但这个func必须带入 http 上下文,不是一个 util function