Scala 播放框架模板:如何在表中开始新行?
我有一个对象列表,我想使用Play Framework模板进行渲染Scala 播放框架模板:如何在表中开始新行?,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我有一个对象列表,我想使用Play Framework模板进行渲染 @(cats: List[Category]) @category(cat: Category) = { <td><button class="btn btn-info">@cat.name</button></td> } <div class="modal-body"> <table class="table"> <
@(cats: List[Category])
@category(cat: Category) = {
<td><button class="btn btn-info">@cat.name</button></td>
}
<div class="modal-body">
<table class="table">
<tbody>
@cats.map { case cat =>
@category(cat)
}
</tbody>
</table>
</div>
我想我可以用索引列表压缩我的列表,并将每三个元素设置为一个新行。但我不知道怎么做
想法
谢谢。您可以使用
分组
对列表进行分组,它将返回列表列表:
scala> List(1,2,3,4,5,6).grouped(3).toList
res13: List[List[Int]] = List(List(1, 2, 3), List(4, 5, 6))
在您的情况下,应该是这样的:
@(cats: List[String])
@category(groupedCats: List[String]) = {
@groupedCats.map { cat =>
<td><button class="btn btn-info">@cat</button></td>
}
}
<div class="modal-body">
<table class="table">
<tbody>
@cats.grouped(3).toList.map { grouped =>
<tr>@category(grouped)</tr>
}
</tbody>
</table>
</div>
@(猫:列表[字符串])
@类别(groupedCats:List[字符串])={
@groupedCats.map{cat=>
@猫
}
}
@cats.grouped(3).toList.map{grouped=>
@类别(分组)
}
通过这种方式,您可以向@category
传递一个包含3个元素的列表,该列表被包装在td
标记中。当然,您可以而且不需要对其进行分组,请改为使用模块比较:
<table>
<tr>
@for((cat, index) <- cats.zipWithIndex) {
<td>@cat</td>
@if((index+1) % 3 == 0){</tr><tr>} @* Close old row if has 3 elements and open new *@
}
</tr>
</table>
@用于((目录,索引)
<table>
<tr>
@for((cat, index) <- cats.zipWithIndex) {
<td>@cat</td>
@if((index+1) % 3 == 0){</tr><tr>} @* Close old row if has 3 elements and open new *@
}
</tr>
</table>