如何在播放旋转模板内创建一个变量?

问题描述:

我有我传递给我的看法,看起来像一个模型:如何在播放旋转模板内创建一个变量?

IndexModel(productSales: Seq[ProductSale]) 

case class ProductSale(id: Int, name: String, soldAt: java.time.ZonedDateTime) 

现在我想显示的产品销售的清单,但我把标题为的一天,然后列出所有销售的那一天这么喜欢:

2016年7月10日

产品1

产品2

2016年7月11日

产品24 产品2234

我能想到这样做会要求我当天到存储在一个变量的唯一途径,所以伪代码如下:

@currentDay = -1 
@for(ps <- model.ProductSales) { 

    @if(currentDay != ps.SoldAt.getDayOfMonth) { 
    <h1>@ps.soldAt</h1> 
    @currentDay = ps.SoldAt.getDayOfMonth 
    } 

    <li>@ps.name - @ps.id </li> 

} 

我应该如何去做这个使用旋转?

尝试(未测试):

@for(currentDate <- model.productSales.map(_.soldAt).distinct) { 
    <h1>@currentDate</h1> 
    @for(ps <- model.productSales.filter(_.soldAt == currentDate) { 
    <li>@ps.name - @ps.id</li> 
    } 
} 

如果你要声明你需要使用@defining(){...}变量 - 在这里阅读更多:https://www.playframework.com/documentation/2.5.x/JavaTemplates#Declaring-reusable-values