3

我在 PlayFramework 2.1.2 中迭代这样的变量

  @for(l: Lang <- Globals.availableLangs) {
    @if(l != ctx.lang) {
      <a ng-click="i18nManager.changeLanguage('@l.code')" prevent-default href="#">@Messages("global.footer.langChange." + l.code.replace("-","_"))</a>
    }
  }

我想在循环生成的&nbsp;&middot;&nbsp;每个“”之间添加。a在 PlayFramework 1.x 中,我们有_isFirst _isLastfor {list}tag。如何在 Play Framework 2.x 中执行此操作?

我需要这样的东西:

  @var first = true
  @for(l: Lang <- Globals.availableLangs) {
    @if(!first) { &nbsp;&middot;&nbsp; @first = false}
    @if(l != ctx.lang) {
      <a ng-click="i18nManager.changeLanguage('@l.code')" prevent-default href="#">@Messages("global.footer.langChange." + l.code.replace("-","_"))</a>
    }
  }
4

1 回答 1

1

如果您需要访问第一个和最后一个元素,您可以随时使用headlast不可变列表 API中找到。并且为了避免再次迭代头部,只迭代tail列表中的。

@defining(@Globals.availableLangs.filterNot(_ == ctx.lang).head){ l =>
  <a ng-click="i18nManager.changeLanguage('@l.code')" prevent-default href="#">@Messages("global.footer.langChange." + l.code.replace("-","_"))</a>  
}
@for(l: Lang <- Globals.availableLangs.filterNot(_ == ctx.lang).tail) {
      &nbsp;&middot;&nbsp;
      <a ng-click="i18nManager.changeLanguage('@l.code')" prevent-default href="#">@Messages("global.footer.langChange." + l.code.replace("-","_"))</a>   
}

编辑误读您的意图,更新以匹配它。

EDIT2添加了过滤器以消除条件检查。

于 2013-07-12T12:12:00.450 回答