【问题标题】:Golang http/template variableGolang http/模板变量
【发布时间】: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 代码中做这件事或更改模板,使变量在同一个作用域内。
  • 当我上床睡觉时,我真的想到了这个。我想在每一页上都有它,但不确定其他数据会采用什么形式,所以我试图将它全部保存在模板中。这太愚蠢了,当我要睡觉时,一个灯泡熄灭了,我用我的页面处理程序中的匿名结构重写了它。它现在工作得更干净了。

标签: templates go


【解决方案1】:

你有没有发现写下你的问题可以澄清你心中的问题,所以你很快就会自己回答?当我意识到我需要弄清楚如何在嵌套模板之间传递局部变量时,就发生了这种情况。对于任何看到这个希望在同一问题上得到帮助的人来说,它就像

一样简单
{{template "<name>" $<variable name>}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2019-11-17
    • 2017-03-03
    相关资源
    最近更新 更多