我的模板当前如下所示:
{{range .Users}}
<div ...>
<div class="row XXXX">
</div>
{{end}}
XXX必须由基于用户结构的属性UserLevel的css类替换,该类是字符串。
因此,根据UserLevel的值,我将显示正确的CSS类:
UserLevel是“beg”,那么我需要输出“beginner”。
UserLevel是“int”,那么我需要输出“intermediate”
等等
我知道我可以重命名css类以匹配属性的值,但是我不想在2之间保持紧密的联系。
由于if语句中不允许使用表达式,这是否可能以某种方式进行?
最佳答案
有几种方法可以做到,我将介绍两种。第一种方法是在模板中使用if语句和相等性测试:
{{range $count, $user := .Users}}
<div ...>
<div class="row {{if eq $user.UserLevel "beg"}}beginner{{else if eq $user.UserLevel "int" }}intermediate{{else}}default{{end}}">
</div>
{{end}}
第二种方法是为User定义一个函数,该函数根据
UserLevel
属性输出正确的类:func (u User) CssClass() string {
switch u.UserLevel {
case "beg":
return "beginner"
case "int":
return "intermediate"
default:
return ""
}
}
{{range $count, $user := .Users}}
<div ...>
<div class="row {{$user.CssClass}}">
</div>
{{end}}
我将这个小的测试代码放在Go playground中,它们都使用正确的类产生相同的输出。
关于go - 如何基于属性呈现正确的CSS类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37511958/