Không có nhiều tài liệu về công cụ tạo mẫu Play 2.0.Cách xác định thẻ bằng Play 2.0?
Làm cách nào để tạo thẻ bằng mẫu Scala?
Không có nhiều tài liệu về công cụ tạo mẫu Play 2.0.Cách xác định thẻ bằng Play 2.0?
Làm cách nào để tạo thẻ bằng mẫu Scala?
Công cụ tạo mẫu trong phiên bản 2.0 trực tiếp đến từ mô-đun scala play 1.0. Nếu bạn vẫn còn tự hỏi những lợi ích nào một ngôn ngữ chức năng như Scala mang đến hình ảnh, thì đây chắc chắn là một trong những lĩnh vực mà nó tỏa sáng.
Trình diễn:
Trong cú pháp scala, thẻ không có gì khác ngoài lệnh gọi hàm. điều thú vị là các đoạn html được coi là chính các hàm, cho phép các cấu trúc thay thế mạnh mẽ nhất.
Hãy xác định một trang html gọi mytag.scala.html
file: apps/views/mytags/mytag.scala.html
@(level:String = "error", index: Int)(body: (String) => Html)
@level match {
case "success" => {
<p class="success" index="@index">
@body("green")
</p>
}
case "warning" => {
<p class="warning" index="@index">
@body("orange")
</p>
}
case "error" => {
<p class="error" index="@index">
@body("red")
</p>
}
}
Thẻ trên mất 3 tham số trong 2 biệt các nhóm thông số:
Bây giờ chúng ta hãy xem làm thế nào chúng ta có thể sử dụng thẻ này:
@import views.mytags._
@mytag("error",2) { color =>
Oops, something is <span style="color:@color">wrong</span>
}
Trước khi chúng tôi có thể sử dụng một thẻ (hoặc chức năng), chúng ta cần để cho Chơi biết nó nằm ở nơi: đó là mục đích của nhập khẩu tuyên bố. Lưu ý rằng vị trí (đường dẫn) của tệp thẻ không liên quan miễn là bạn điều chỉnh vị trí nhập, giống như với các gói Java.
Theo dõi chính cuộc gọi đó là loại đơn giản. Tuy nhiên, lưu ý rằng chúng tôi đang chuyển một đoạn html parametrized vào thẻ.
Để biết thêm chi tiết, bạn có thể tìm thấy tài liệu scala mẫu tại đây URL
Chơi 2.0 cuối cùng sẽ đi kèm với tài liệu hướng dẫn riêng của mình.
Câu trả lời hoàn toàn không cần thiết nhưng chỉ để huấn luyện scala của tôi. Điều này sẽ không hoạt động và ngắn hơn trong khi vẫn rõ ràng?
@(level:String = "error", index: Int)(body: (String) => Html)
<p class="@level" index="@index">
@body(
@level match {
case "success" => "green"
case "warning" => "orange"
case "error" => "red"
}
)
</p>
tôi gặp phải lỗi trình biên dịch khi tôi sử dụng ví dụ đầu tiên. Xóa "chế độ xem". trong quá trình nhập đã giải quyết được sự cố
sử dụng @import mytags._
Full dụ (http://www.playframework.com/documentation/2.1.1/JavaTemplateUseCases):
Let’s write a simple views/tags/notice.scala.html tag that displays an HTML notice: @(level: String = "error")(body: (String) => Html) @level match { case "success" => { <p class="success"> @body("green") </p> } case "warning" => { <p class="warning"> @body("orange") </p> } case "error" => { <p class="error"> @body("red") </p> } }
Và bây giờ chúng ta hãy sử dụng nó từ mẫu khác:
@import tags._
@notice ("lỗi") màu { => Rất tiếc, đã xảy ra sự cố}
Tôi thành thật không biết, không phải chuyên gia về scala. trông giống như một câu hỏi hay về SO. –
Tôi nên thử lại play2.0 sớm. Lần trước, nó thực sự là quá thô cho các thí nghiệm của tôi! Tôi không phải là một chuyên gia về Scala nhưng tôi học được rất nhiều và đó là ngôn ngữ duy nhất cho đến bây giờ mang lại cho tôi ấn tượng tôi chắc chắn có thể tắt Java ở cuối;) – mandubian
Trong trường hợp này, nếu mức độ là bất cứ điều gì khác hơn là thành công, cảnh báo hoặc lỗi, bạn sẽ có thẻ ap với lớp css đó, có thể không được đánh dấu. Trong câu trả lời từ @Olivier Refalo, một thẻ P sẽ chỉ được in nếu nó khớp với một trong các mức lỗi. – user3001