【发布时间】:2018-10-12 02:33:13
【问题描述】:
我在一个名为 $active 的模板中有一个变量,我的想法是检查它以使导航栏按钮处于活动状态。我已经定义了一个发生逻辑的标题,但我试图在我的 Execute 函数调用的 html 文件上定义 $active。问题是首先读取标题,因此在正文文件中定义的任何变量都为时已晚,无法影响逻辑。从标题:
{{ $a := mkSlice "SiteTester" "/sitetester-add/" }}
{{ $b := mkSlice "Index" "/" }}
{{ $nav := mkSlice $a $b }}
<ul class="nav navbar-nav">
{{range $nav}}
<li{{if eq $active (index . 0) }} class="active"{{end}}><a href="{{index . 1}}">{{index . 0}}</a></li>
{{end}}
</ul>
我什至一直在尝试制作一个单独的片段来处理变量分配:
{{define "indexpreload"}}
{{$active := "Index"}}
{{end}}
并在解析后的.html中先调用它:
{{template "indexpreload" .}}
{{template "header" .}}
<h3 class="section-banner"><strong>Welcome</strong></h3>
<hr class="divider">
<div class="form-group col-md-4 text-left"></div>
<div class="form-group col-md-4 text-left">
<br><br>
<p>Content content content</p>
</div>
{{template "footer" .}}
我会很感激关于如何在运行标头之前分配变量的任何想法?我希望将此登录信息保留在模板中,这样我就不必担心从我的程序中传递变量。
【问题讨论】:
-
你不能在你的代码而不是模板中做逻辑吗?你能显示执行功能吗?变量作用域以
{{end}}结尾,所以你必须在 go 代码中做这件事或更改模板,使变量在同一个作用域内。 -
当我上床睡觉时,我真的想到了这个。我想在每一页上都有它,但不确定其他数据会采用什么形式,所以我试图将它全部保存在模板中。这太愚蠢了,当我要睡觉时,一个灯泡熄灭了,我用我的页面处理程序中的匿名结构重写了它。它现在工作得更干净了。