2013-04-23 32 views
8

tôi cố gắng sử dụng một hàm trong một cái nhìn vở kịch mẫuXác định một hàm scala trong một vở kịch mẫu

@active(path: String):String = @{ 
     var active:String = "" 
     if (request.path.startsWith(path)) { 
      active = "class=\"active\"" 
     } 
     return active 
} 

<div class="container-fluid"> 
.... 
    <li @active("/page") ...> 

Trình biên dịch vở kịch nói rằng nó không thể tìm thấy những giá trị tích cực. Có gì sai ở đây?

+1

Đối với một, biểu tượng @ thứ hai là không cần thiết. Thứ hai, bạn đã xác định hàm @active trong tệp của chính nó và/hoặc đã nhập nó chưa? – korefn

+0

Tôi đã chuyển nó trong tập tin riêng của mình ngay bây giờ. Như thế này nó hoạt động. Cũng không sao vì tôi cũng cần nó trong các tệp khác. – myborobudur

+2

@korefn: Trên thực tế, biểu tượng @ thứ hai cho Play biết rằng đây là một khối tài liệu Play gọi mã "thuần túy" (tức là Scala), trái với một phần của mẫu HTML. Nếu anh ta bỏ qua @ đó, hàm sẽ trả về "var active: String ... v.v." như văn bản theo nghĩa đen. –

Trả lời

15

Thử xóa loại trả về của hàm và di chuyển nó lên đầu mẫu của bạn. Điều này hoạt động trong mẫu của tôi (xem thêm: Playframework 2.0 define function in View Template):

@active(path: String) = @{ 
    if (request.path.startsWith(path)) 
    "class=\"active\"" 
    else 
    "" 
} 
Các vấn đề liên quan