在播放模板中定义scala函数
我尝试在播放视图模板中使用函数在播放模板中定义scala函数,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我尝试在播放视图模板中使用函数 @active(path: String):String = @{ var active:String = "" if (request.path.startsWith(path)) { active = "class=\"active\"" } return active } <div class="container-fluid"> .... <li @
@active(path: String):String = @{
var active:String = ""
if (request.path.startsWith(path)) {
active = "class=\"active\""
}
return active
}
<div class="container-fluid">
....
<li @active("/page") ...>
@活动(路径:字符串):字符串=@{
var-active:String=“”
if(request.path.startsWith(path)){
active=“class=\”active“”
}
返回活动
}
....
播放编译器说它找不到激活的值。这里出了什么问题?尝试删除函数的返回类型,并将其移动到模板顶部。这适用于我的模板(另请参见:):
首先,第二个@符号是不必要的。其次,您是否在自己的文件中定义了@active函数并/或导入了它?我现在将其移动到了自己的文件中。像这样就行了。这也没关系,因为我在其他文件中也需要它。@korefn:事实上,第二个@符号告诉Play,这是Play文档所称的“纯”(即Scala)代码块,而不是HTML模板的一部分。如果他省略了@,函数将以文本形式返回“var-active:String…etc”。
@active(path: String) = @{
if (request.path.startsWith(path))
"class=\"active\""
else
""
}