【问题标题】:Define a scala function in a play template在播放模板中定义一个 scala 函数
【发布时间】:2013-04-23 07:17:24
【问题描述】:

我尝试在播放视图模板中使用函数

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

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

play 编译器说它找不到值 active。这里有什么问题?

【问题讨论】:

  • 第一,第二个@符号是不必要的。其次,您是否在自己的文件中定义了@active 函数和/或导入了它?
  • 我现在将它移到了自己的文件中。像这样它可以工作。没关系,因为我在其他文件中也需要它。
  • @korefn:实际上,第二个 @ 符号告诉 Play 这是 Play 文档称为“纯”(即 Scala)代码的块,而不是 HTML 模板的一部分。如果他省略了那个@,函数将返回“var active:String ... etc”。作为文字文本。

标签: scala playframework playframework-2.0


【解决方案1】:

尝试删除函数的返回类型并将其移动到模板的顶部。这适用于我的模板(另请参阅:Playframework 2.0 define function in View Template):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2013-05-10
    相关资源
    最近更新 更多