2012-05-06 32 views

Trả lời

10

Trước tiên, bạn không tạo ra một biến nhưng một giá trị có nghĩa là nó chỉ đọc.

Trong ví dụ của bạn, bạn đã tạo giá trị fullName có thể truy cập được trong dấu ngoặc nhọn.

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

Sẽ in Xin chào Farmor

Để xác định một giá trị có thể truy cập trên toàn cầu trong mẫu của bạn chỉ ôm hôn tất cả mọi thứ với dấu ngoặc nhọn của mình.

Ví dụ:

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

Trong ví dụ bạn có thể sử dụng giá trị formId.

+10

xấu xí, phức tạp! .... Rất nhiều cho tất cả các nỗ lực vận tốc/freemarker để làm cho quan điểm thực sự sạch sẽ và HTML-coder thân thiện. Có vẻ như bây giờ là thời trang làm cho xem html một tổng số mess * sigh * – monzonj

+1

Tôi đồng ý! Tôi không thích cú pháp này rất nhiều. – droope

2

Nó dễ dàng, trải rộng khối của bạn với mã từ mẫu, sau đó bạn sẽ có thể sử dụng @fullName biến trong đó có giá trị:

user.firstName + " " + user.lastName 
9

Nếu bạn không muốn sử dụng cú pháp @defining bạn có thể định nghĩa một reusable block mà sẽ được đánh giá mỗi khi bạn sử dụng nó:

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

<div>Hello @fullName</div> 

với cú pháp này tương tự bạn cũng có thể vượt qua đối số cho các khối: https://github.com/playframework/Play20/blob/master/samples/scala/computer-database/app/views/list.scala.html

+0

Trừ một khối có thể tái sử dụng sẽ được thực thi lại mỗi khi nó được sử dụng, trong khi giá trị của khối xác định sẽ chỉ được tính một lần. – kdkeck

+0

Cảm ơn, đã chỉnh sửa. – OlivierBlanvillain

Các vấn đề liên quan