我的模板当前如下所示:

{{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/

10-13 04:23