3

嗨所以我有一个while循环:

@for(i <- 0 until consoles.size) {
    ... Do something
    ... Add records to a column
}

但是我想添加一个变量,并根据发生的情况将它添加到不同的组。例如:

@var column = 0;
@for(i <- 0 until consoles.size) {
        @if(consoles[i].groupname != consoles[i - 1].groupname) {
             column = column + 1;
        }
        ... Do something
        ... Add records to a column
    }

这可能吗。我发现的唯一一件事是传入一个变量并使用它,但我不希望这样做,尽管它只是一个 int 所以不要向客户端发送更多信息,如果我可以在斯卡拉模板?

任何帮助,将不胜感激。

4

2 回答 2

6

在您的情况下,有更好的解决方案。由于模板在 scala 中,您可以使用 Collections 的 API 中的一些很棒的方法,例如 groupBy :

@myList.groupBy(_.groupname).map {
    case (group, items) => {
        <h2>@group</h2>
        @items.map { item =>
            ...
        }
    }
}

Scala 模板不需要 Scala 技能,但您至少需要了解列表 API,它是真正的救生员!

于 2012-07-02T08:50:28.227 回答
3

在播放模板中,您无法定义var. 此外,在 Scala 中,鼓励您使用不可变对象而不是可变对象。

你有两种选择来做你想做的事:

  1. 正如@Maxime 回答的那样,使用更符合 scala 的惯用方式
  2. 处理vals

除了@Maxime's answer之外,您还可以val使用在模板中创建新的defining

play 2文档

@defining(user.firstName + " " + user.lastName) { fullName =>
    <div>Hello @fullName</div>
}
于 2012-07-02T07:27:19.753 回答