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