如何根据 属性 渲染正确的 css class?
How to render the correct css class based on a property?
我的模板目前是这样的:
{{range .Users}}
<div ...>
<div class="row XXXX">
</div>
{{end}}
必须将 XXX 替换为基于 User 结构的 属性 的 css-class,UserLevel 是一个字符串。
所以根据UserLevel的值,我会显示正确的css class:
UserLevel是"beg"那么我需要输出"beginner"。
UserLevel 是 "int" 那么我需要输出 "intermediate"
等等
我知道我可以重命名 css class 以匹配 属性 的值,但我不想在 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
属性:
输出正确的class
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 中,两者都产生相同的输出并正确 class。
我的模板目前是这样的:
{{range .Users}}
<div ...>
<div class="row XXXX">
</div>
{{end}}
必须将 XXX 替换为基于 User 结构的 属性 的 css-class,UserLevel 是一个字符串。
所以根据UserLevel的值,我会显示正确的css class:
UserLevel是"beg"那么我需要输出"beginner"。 UserLevel 是 "int" 那么我需要输出 "intermediate" 等等
我知道我可以重命名 css class 以匹配 属性 的值,但我不想在 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 中,两者都产生相同的输出并正确 class。