2016-04-13 3 views
1

Я использую Play Framework 2.5, имея дело с шаблонами scala.html и Twirl. Может кто-то, пожалуйста, помогите мне понять, как установить «ключ» на моем пролете, чтобы быть моим «val id»?Play Framework Twirl template html element attribute

Я не могу заставить это работать в атрибутах элемента html. Я не уверен, какой синтаксис использовать, чтобы получить мой идентификатор val, записанный на мой ключ диапазона.

Спасибо за любую помощь.

@{ 
 
    val rank = player.rank 
 
    val id = player.id 
 

 
    if(rank == "Great") { 
 
     <span key="{id}">{rank}</span> 
 
    } else if(rank == "Good") { 
 
     <span key="{id}">{rank}</span> 
 
    } 
 
}

ответ

2

Вы не можете добавлять HTML внутри @{ } блока. То, что вы хотите, возможно, примерно так:

@if(player.rank == "Great") { 
    <span key="@player.id">@player.rank</span> 
} else if(player.rank == "Good") { 
    <span key="@player.id">@player.rank</span> 
} 

Объявление переменных в этих шаблонах не так просто, как кажется. Check the documentation для некоторых примеров.

+0

Спасибо за ответ. Я начал понимать ограничения после публикации. Ваше решение будет работать. Я предоставил свои собственные дополнительные рекомендации, поскольку эти типы примеров были трудно найти. – Mule

1

Я бы воспользовался функцией @defining() {}, чтобы решить мою проблему. У Twirl нет другого, если. Я просто дефолт, если бы были утверждения. Вот как я это решил.

@defining(player.rank) { rank => 
 
    @defining(player.id) { id => 
 
     @if(rank == "Great") { 
 
      <span key="@id">@rank</span> 
 
     } 
 
     @if(rank == "Good") { 
 
      <span key="@id">@rank</span> 
 
     } 
 
     
 
     <select key="@id"> 
 
     @for((key, value) <- model.getAllRankings()){ 
 
      <option id="@key" @if(rank == value) {selected}>@value</option> 
 
     } 
 
     </select> 
 
    } 
 
}

Смежные вопросы