1

Play2.0 を積極的に学習しながら、タグの作成に行き詰まっています。computer-database というサンプル アプリケーションでは、リスト テンプレートに次のヘルパーが作成されます。

@****************************************
* 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)
}

しかし、明らかにこれは機能しておらず、どこで、またはなぜ機能していないのかわかりません。

入力していただきありがとうございます。

回答付きで更新:

そのため、Scala テンプレートでは、Java と同様に、このビューに渡される引数を定義する必要があります (注意: JavaScript で使用する変数も渡す必要があります!)。ドキュメントに記載されているように、テンプレートはメソッドとしてコンパイルされます。

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

@(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)
}
4

1 に答える 1

1

トリックは、最初のバージョンが HTML の代わりに Scala コードを書くことを可能にするテンプレート構文@{ val scalaVal = 42}を使用することです: .

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

@このコードをコピーして貼り付ける場合は、左中かっこの前の先頭を忘れないでください。

于 2012-04-24T20:50:25.673 に答える