小编典典

基于已加载模板的CSS类

go

我在_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功能,增加了

class="active"

到每个对应的对应列表项。但是我仍然可以通过某种方式添加一些类似的内容

<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”语句?


阅读 201

收藏
2020-07-02

共1个答案

小编典典

我个人经常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>

但是只能将其用于显示逻辑本身。将显示逻辑和实际计算区分开来是一个好习惯。

2020-07-02