templates - html/template if 范围索引子句

标签 templates go

我有这个模板可以将 slice 的多个项目解析到页面上。它确实做得很好。

但是,我现在想使用完全相同的模板来根据范围索引解析 slice 的单个值。该 slice 在多个文件中使用,所以我不能像 Slice[1:2] 那样执行它

{{ $bpi := .Index}}

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

从我读到的内容来看,模板不是用于计算的,但是如果你在 html/template 包中有一个范围索引和 if 语句,在我看来我一定是做错了什么.我当然可以写一个 FuncMap,没问题。但鉴于这些事实,我觉得这似乎不对。

最佳答案

我正在使用类似这样的东西来有条件地包含默认图像或提供的图片 slice 中的第一张。所以我认为这将为你提供做你想做的事情的基础。我检查 slice 是否有值,使用 {{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 }}

关于templates - html/template if 范围索引子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18637982/

相关文章:

mongodb - 使用 gopkg.in/mgo.v2 检查 mongo 中的对象是否存在

go - 混合字段 :value and value initializers

C++ 包装器模板 : how to pass it as a template parameter?

json - 如何解析 Unmarshaled 结构中的引用

image - 在Golang中检查HEIC文件格式

go - Go语言Vs代码如何调试部署在本地服务器上的RestApi

c++ - 使用另一个类模板专门化一个类模板时, `template<>` 是可选的吗?

c++ - 根据参数返回类型

c++ - 禁止模板虚函数是一种不必要的谨慎吗?

c++ - 从嵌套模板中删除 const