我在_base.html模板中得到了这个引导导航,如下所示:
<ul class="nav navbar-nav"> <li><a href="/" class="">Home</a></li> <li><a href="/blog/">Blog</a></li> </ul>
使用Golang我想添加一个
class="active"
到相应的列表项。
我读过的HTML /模板文档和文章一样thisone,但在我看来,我必须写一个golang功能,增加了
到每个对应的对应列表项。但是我仍然可以通过某种方式添加一些类似的内容
<ul> <li{{ if .template = "index.html" }} class="active"{{ end }}><a href="/">Home</a></li> <li{{ if .template = "blog.html" }} class="active"{{ end }}><a href="/blog/">Blog</a></li> </ul>
或类似的东西。我记得Rob Pike说过Golang应该为您做所有计算,但是为什么在html / template-package中有一个“ if”语句?
我个人经常eq为这样的任务实现一个小助手:
eq
var tmpl = template.Must(template.New("").Funcs(template.FuncMap{ "eq": func(a, b interface{}) bool { return a == b }, }).ParseGlob("templates/*.html")
用法示例:
<li{{if eq .Active "index"}} class="active"{{end}}><a href="/">Home</a></li>
但是只能将其用于显示逻辑本身。将显示逻辑和实际计算区分开来是一个好习惯。