我有这个结构:
const (
paragraph_hypothesis = 1<<iota
paragraph_attachment = 1<<iota
paragraph_menu = 1<<iota
)
type Paragraph struct {
Type int // paragraph_hypothesis or paragraph_attachment or paragraph_menu
}
我想以Type
相关方式显示我的段落。
我发现的唯一解决方案是基于专用功能,例如在Go和nested中isAttachment
进行测试:Type``{{if}}
{{range .Paragraphs}}
{{if .IsAttachment}}
-- attachement presentation code --
{{else}}{{if .IsMenu}}
-- menu --
{{else}}
-- default code --
{{end}}{{end}}
{{end}}
实际上,我有更多的类型,这使它变得更加奇怪,使带有IsSomething
功能的Go代码和具有这些功能的模板都变得混乱{{end}}
。
什么是干净的解决方案?有一些switch
或if/elseif/else
解决方案中去的模板?还是完全不同的方式来处理这些案件?
模板是无逻辑的。他们不应该具有这种逻辑。您可以拥有的最大逻辑是一堆if
。
在这种情况下,您应该这样做:
{{if .IsAttachment}}
-- attachment presentation code --
{{end}}
{{if .IsMenu}}
-- menu --
{{end}}
{{if .IsDefault}}
-- default code --
{{end}}
if statements in Smarty have much the same flexibility as php if statements, with a few added features for the . Everyif must be paired with an/if .else andelseif are also permitted. "eq", "ne","neq",
概要 <#if condition> ... <#elseif condition2> ... <#elseif condition3> ... ... <#else> ... </#if> 这里: condition, condition2, 等:将被计算成布尔值的表达式。 elseif 和 else 是可选的。 描述 你可以使用 if, elseif 和 else 指令来条
我们常会做前台多语言模板,为了更好的实现多语言模板,CMF提供了良好的模板切换机制,我们在程序中定义了switch_theme钩子,通过这个钩子,我们可以制作各种模板切换功能,如多语言模板,手机模板; 在插件目录public/plugins我们内置了一个switch_theme_demo演示插件,通过这个插件你可以大体明白模板切换原理,你就可以实现自己的模板切换插件,如果你不想自己实现,也可以在我
我们常会做前台多语言模板,为了更好的实现多语言模板,CMF提供了良好的模板切换机制,我们在程序中定义了switch_theme钩子,通过这个钩子,我们可以制作各种模板切换功能,如多语言模板,手机模板; 在演示仓库的插件目录public/plugins我们提供了一个switch_theme_demo演示插件,通过这个插件你可以大体明白模板切换原理,你就可以实现自己的模板切换插件,如果你不想自己实现,
一个If语句后面跟着一个或多个ElseIf语句,这些语句由布尔表达式组成,然后是一个默认的else语句,当所有条件都变为false时执行。 语法 (Syntax) 以下是VBScript中If Elseif - Else语句的语法。 If(boolean_expression) Then Statement 1 ..... ..... Statement n ElseIf
if语句后面可以跟一个else if...else语句,这对于使用单个if...else if语句测试各种条件非常有用。 语法 (Syntax) if...else if...else语句的语法如下 - if boolean_expression_1 { /* Executes when the boolean expression 1 is true */ } else if boolea