html / template if range index子句

时间:2013-09-05 13:41:26

标签: templates go

我有这个模板可以将一个切片的多个项解析到页面上。它做得非常好。

但是,我现在想要使用相同的模板根据范围索引解析切片的单个值。切片用在多个文件中,所以我不能只是。像Slice [1:2]

那样执行它
{{ $bpi := .Index}}

{{ range $i, $elmt := .Slice }}
    {{ if $bpi.Equals $i }}
      <div>{{ .SliceContent }}</div>
    {{ end }}
{{ end }}

从我读过的是模板不是用于计算,但如果你在html / template包中有一个范围索引和if语句,我觉得我一定做错了。我可以写一个FuncMap ofcourse,没问题。但鉴于这些事实,我似乎并不合适。

1 个答案:

答案 0 :(得分:0)

我正在使用类似的东西有条件地包含默认图像或第一张来自提供的图片。所以我认为这将为您提供做您想做的事情的基础。我检查切片是否有值,使用{{index .Slice n}}语法拉出第N个项目,如下所示:

     {{ $idx := 2}}
     {{if .Pictures}}
       <img src="{{if .Pictures}}{{index .Pictures $idx}}{{end}}" alt="supplied first picture">
     {{else}}
       <img src="http://fpoimg.com/200x200?text=Placeholder(FPOimg.com)" alt="default picture">
     {{end}}

因此,您可以执行以下操作:

    {{ $bpi := .Index}}

    {{ if .Slice }}
        {{ index .Slice $bpi }}
    {{ end }}