为什么选项html元素在case 1中的select中没有绑定?
案例1:不工作
@base{
<select name="" value="" class="custom-select">
@{
println("1"); // this is printed to console
<option value="test">i</option> // this is not shown in html
println("2"); // this is printed to console
}
</select>
}
案例2:工作
@base{
<select name="" value="" class="custom-select">
@{
println("1"); // this is printed to console
<option value="test">i</option> // this is shown in html
}
</select>
}
更新
如何创建一个将所有选项元素绑定到scala模板的循环?以下代码不绑定任何选项元素。什么是实际的返回类型?空行?
<select name="" value="" class="custom-select">
@{
for(i <- 1 to 10) {
<option value="@i">@i</option>
}
}
</select>
答案 0 :(得分:2)
代码块@{...}
是一个闭包,它具有来自最后一个语句的推断返回类型。
在第一种情况下,返回类型推断为Unit
,因为println(...)
返回Unit
在第二个块中返回html。
答案 1 :(得分:0)
我不能直接谈第一个问题,但假设@korefn和@ om-nom-nom是正确的;该块是一个闭包,并将该回报解释为无效。
为了回应您的更新,我会尝试:
@for(i <- 1 to 10) {
<option value="@i">@i</option>
}
这就是我过去使用它的方式。我还发现使用嵌套的@if块以不同方式处理所选选项很有帮助,以便在加载文档时选择它。