2012-06-01 5 views
0

Я потратил немного времени на изучение Play 2, и теперь хочу обобщить свой проект. У меня есть представление для отображения списка сущностей, и теперь я хочу передать другое представление как параметр, который будет отображать сущность в этот список. Например:Play Framework 2. Пропустить вид на вид

// showList.scala.html 
@(entityList: List[Entity], /* Template for one Entity render. Named entityRenderer*/) 
@for(entity <- entityList) 
entityRenderer(entity) 

// entityRenderer.scala.html 
@(entity: Entity) 
    @entity.getName() 

, какой тип entityRenderer должен иметь?

Я знаю, что каждый шаблон - это просто функция scala, но как с ними бороться?

ответ

0

Если я правильно понимаю ваш вопрос, я хотел бы предложить следующее:

// file main.scala.html 
@(entityList: Page[models.Task]) // here we define a Page of entities 
@for(entity <- entityList.getList) { 
    <ul> 
     @tags.entityRenderer(entity) // here we call another view passing the entity 
    </ul> 
} 

И другой файл:

// file entityRenderer.scala.html in package tags 
@(entity: Task) // here we define the incoming arguments 
    <li>entity.property</li> 

Rember, что шаблоны в основном скомпилированы в функцию. Поэтому вам нужно определить правильные аргументы и, очевидно, передать правильный аргумент.

+0

Это не то, что я имею в виду. Теперь у меня есть ситуация, в которой вы пишете. И это приносит немного повторяющийся код. В вашем примере я хочу передать tags.entityRenderer() в качестве параметра main.scala.html. Используя этот aproach, я могу отобразить список задач, например, как список небольших заголовков, если я передам smallHeaderRenderer() или в виде подробного списка, если я передам подробный запрос(). Кстати, может быть, я неправильно понял базовую концепцию? –

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