我想知道else if在视图中是否支持2.0.3及更高版本?我只读过一个必须以这种方式编码:if {...}else{if{...}else{...}} 不能相信.
Mar*_*Cnu 33
我在第二个之前使用过@:
@if (true) {
...
} else { @if (true) {
...
} else {
...
}}
Run Code Online (Sandbox Code Playgroud)
小智 26
@Todd Flanders的回答是对的.在包装器@ {}中,您可以编写正常的Scala代码.例
@{
if (profile.sex == 0) {
<p class="col-md-6">Other</p>
} else if (profile.sex == 1) {
<p class="col-md-6">Male</p>
} else {
<p class="col-md-6">Female</p>
}
}
Run Code Online (Sandbox Code Playgroud)
Tod*_*ers 15
我也能得到
@{if (true) "foo" else if (true) "bar" else "baz"}
Run Code Online (Sandbox Code Playgroud)
上班.请记住,大多数编程语言不支持"else if"作为词法标记.它们是单独的命令."else"命令执行的代码块恰好是"if"语句.
另请注意,您可以将XHTML与子句混合使用:
@{if (true) <b>foo</b> else if (false) "bar" else "baz"}
Run Code Online (Sandbox Code Playgroud)
我同意biesior认为将状态逻辑推入控制器通常是个好主意,然后你可以为不同的状态提供不同的视图,共享组件有自己的子视图.
bie*_*ior 10
不,它没有.它只允许你if(condition) {then...} else {otherwise...}
要获得更多可能性,您需要使用模式匹配(类似于PHP switch())
在这种情况下_是默认选项.
来自以前版本的Play Autheticate的示例(现在与控制器中的反射相同)
@(url: String, token: String, name: String)
@defining(lang().code) { langcode =>
@langcode match {
case "de" => {@_password_reset_de(url,token,name)}
case "pl" => {@_password_reset_pl(url,token,name)}
case _ => {@_password_reset_en(url,token,name)}
}
}
Run Code Online (Sandbox Code Playgroud)
那么也许最好的选择是解析控制器中的条件并将其作为参数传递给视图?
| 归档时间: |
|
| 查看次数: |
21466 次 |
| 最近记录: |