在模板中是否有可以使用的取模运算符?

huangapple go评论82阅读模式
英文:

Go: Is there a modulus I can use inside a template

问题

我的问题如标题所述。我正在尝试做类似的事情:

{{range $index, $element := .Products}}
    {{if $index % 4 == 0}}<div class="row">{{end}}
        <div class="columns small-3 product">
            <img src="/img/{{.ImageUrl}}" alt="{{.ImageUrl}}" />
  			    <a href="/product">
                    <h3>{{.Title}}</h3>
  				</a>
  				<p>
                  {{.Description}}
  				</p>
  				<p>
                    {{.Price}} / 升
  				</p>
  				</div>
        {{if index % 4 == 0}}</div>{{end}}
{{end}}

我得到了错误:

template: products.html:9: 意外的“%”操作数

在模板中有没有其他方法可以进行取模运算?

英文:

My question is as stated in the title. I am trying to do something like:

{{range $index, $element := .Products}}
    {{if $index % 4 == 0}}<div class="row">{{end}}
        <div class="columns small-3 product">
            <img src="/img/{{.ImageUrl}}" alt="{{.ImageUrl}}" />
  			    <a href="/product">
                    <h3>{{.Title}}</h3>
  				</a>
  				<p>
                  {{.Description}}
  				</p>
  				<p>
                    {{.Price}} / liter
  				</p>
  				</div>
        {{if index % 4 == 0}}</div>{{end}}
{{end}}

I get the error:

template: products.html:9: unexpected "%" in operand

Is there an alternate way to do modulus in a template?

答案1

得分: 18

添加一个你需要的逻辑的模板函数。例如:

t := template.New("")
t.Funcs(template.FuncMap{"mod": func(i, j int) bool { return i%j == 0 }})
t.Parse(`... {{if mod $index 4}}<div class="row">{{{end}} ...`)

playground example

英文:

Add a template function with the logic you need. For example:

t := template.New(&quot;&quot;)
t.Funcs(template.FuncMap{&quot;mod&quot;: func(i, j int) bool { return i%j == 0 }})
t.Parse(`... {{if mod $index 4}}&lt;div class=&quot;row&quot;&gt;{{{end}} ...`)

playground example

huangapple
  • 本文由 发表于 2016年4月2日 12:31:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/36369210.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定