我正在尝试使用 Play 2 和 Scala 制作订单。
这是分组前的样子:
<table>
@items.zipWithIndex.map {
case (item, index) =>
@itemRow(item, index)
}
</table>
itemRow 定义
@itemRow(index: Int, item: Item) = {
<tr>
<td>
@(index+1)
</td>
<td>
@item.name
</td>
<td>
<input type="hidden" name="@requestForm("items")("[" + index + "]")("itemId").name" value="@item.id">
<input type="text" name="items[@index].count" value="@requestForm("items")("[" + index + "]")("count").value">
</td>
</tr>
}
起初我尝试了幼稚的实现
@items.groupBy(item => item.category).map {
case (categoryId, itemsInCategory) =>
<table>
@itemsInCategory.zipWithIndex.map {
case (item, index) =>
@itemRow(item, index)
}
</table>
}
但是有一个问题,每个类别的索引都是从 0 开始的。
所以,http请求是这样的:
# category 1
items[0].id = 1
items[0].count = 1
items[1].id = 2
items[1].count = 2
# category 2
items[0].id = 3
items[0].count = 1
items[1].id = 4
items[1].count = 5
它是导致值被覆盖的原因。我需要我的索引在表单中是连续的,如下所示:
# category 1
items[0].id = 1
items[0].count = 1
items[1].id = 2
items[1].count = 2
# category 2
items[2].id = 3
items[2].count = 1
items[3].id = 4
items[3].count = 5
所以有问题
对于函数式程序员:
- 我可以为所有组共享索引变量吗?
对于 Play 2.0 或网络程序员:
- 有没有另一种方法来制作具有可变重复值计数的表格?
- 如何避免发送这一堆计数为 0 的物品?