2012-04-24 4 views
1

Play2.0を積極的に学習しながらタグを作成しています。コンピュータ・データベースと呼ばれるサンプルアプリケーションでは、以下のヘルパーは、リストテンプレートで作成されます。Play2.0で@linkを生成するためのタグを作成

@**************************************** 
* Helper generating navigation links * 
****************************************@ 
@link(newPage:Int, newSortBy:String) = @{ 

var sortBy = currentSortBy 
var order = currentOrder 

if(newSortBy != null) { 
    sortBy = newSortBy 
    if(currentSortBy == newSortBy) { 
     if(currentOrder == "asc") { 
      order = "desc" 
     } else { 
      order = "asc" 
     } 
    } else { 
     order = "asc" 
    } 
} 

// Generate the link 
controllers.orders.routes.Work.list(newPage, sortBy, order, currentFilter) 

} 

私は最善の解決策は、タグを作成するだろうと思ったビューテンプレートでは、このヘルパーを使用したいので、それのための。明らかにこれは動作していないと私は知らないどこか、なぜそれが機能していない、

@(newPage : Int, newSortBy:String) { 
    var sortBy = currentSortBy 
    var order = currentOrder 

    if(newSortBy != null) { 
     sortBy = newSortBy 
     if(currentSortBy == newSortBy) { 
      if(currentOrder == "asc") { 
       order = "desc" 
      } else { 
       order = "asc" 
      } 
     } else { 
      order = "asc" 
     } 
    } 
    // Generate the link 
    controllers.orders.routes.Computer.list(newPage, sortBy, order, currentFilter) 
} 

しかし:だから私は(私のタグパッケージに)以下でした。

ありがとうございます。 ANSWER WITH

UPDATE:あなたはjavascriptを必須に使用する変数のこと:

だからScalaのテンプレートでは、我々は注意してください(、ちょうどジャワのように、このビューに渡される引数を定義する必要がありますまた渡される!)。テンプレートは、the documentationに記載されている方法でコンパイルされます。

作業タグは次のようになります。

@(newPage : Int, newSortBy : String, currentSortBy: String, currentOrder: String, currentFilter : String) @{ 
    var sortBy = currentSortBy 
    var order = currentOrder 

    if(newSortBy != null) { 
     sortBy = newSortBy 
     if(currentSortBy == newSortBy) { 
      if(currentOrder == "asc") { 
       order = "desc" 
      } else { 
       order = "asc" 
      } 
     } else { 
      order = "asc" 
     } 
    } 

    // Generate the link 
    controllers.orders.routes.Work.list(newPage, sortBy, order, currentFilter) 
} 

答えて

1

トリックは最初のバージョンではなく、HTMLのScalaのコードを記述することができtemplate syntaxを使用していることである:@{ val scalaVal = 42}

タグでは、テンプレートエンジンによってコードがHTMLとして解釈されます。

このコードをコピーして貼り付ける場合は、先頭の中括弧の前に先行する@を忘れないようにしてください。

関連する問題