2012-05-06 17 views

Odpowiedz

10

pierwsze nie utworzyć zmienną ale wartość co oznacza, że ​​jest tylko do odczytu.

W twoim przykładzie utworzyłeś wartość fullName, która jest dostępna wewnątrz nawiasów klamrowych.

@defining("Farmor") { fullName => 
    <div>Hello @fullName</div> 
} 

wypisze Witam Farmor

Aby określić wartość, która jest dostępna globalnie w szablonie tylko objąć wszystko ze swoimi kręconymi nawiasach.

E.g.

@defining("Value") { formId => 
    @main("Title") { 
    @form(routes.Application.addPost, 'id -> formId) { 
     @inputText(name = "content", required = true) 
     <input type="submit" value="Create"> 
    } 
    } 
} 

W tym przykładzie można użyć wartości o dowolnej wartości: formId.

+10

brzydki, zawiłowany! .... Tyle, jeśli chodzi o wszelkie wysiłki podejmowane przez prędkość/freemarker, aby widoki były naprawdę czyste, a kodery HTML przyjazne. Wygląda na to, że teraz moda sprawia, że ​​wyświetlenia html są totalnym bałaganem * – monzonj

+1

Zgadzam się! Nie podoba mi się ta składnia bardzo bardzo. – droope

2

To proste, rozciągać swój blok z kodem z próbki, a następnie będzie można użyć @fullName zmienną, która ma wartość:

user.firstName + " " + user.lastName 
9

Jeśli nie chcesz używać składni @defining można zdefiniować reusable block które będą oceniane za każdym razem, kiedy go używać:

@fullName = @{ 
    user.firstName + " " + user.lastName 
} 

<div>Hello @fullName</div> 

z tej samej składni można również przekazywać argumenty do bloku: https://github.com/playframework/Play20/blob/master/samples/scala/computer-database/app/views/list.scala.html

+0

Z wyjątkiem bloku wielokrotnego użytku, który zostanie ponownie wykonany za każdym razem, gdy zostanie użyty, natomiast wartość bloku definiującego zostanie obliczona tylko raz. – kdkeck

+0

Dzięki, edytowane. – OlivierBlanvillain

Powiązane problemy