在积极学习 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)
}