我想设置活动菜单项的样式,为此我需要比较当前的URL再次路由.我知道我可以在javascript中执行此操作,但我想知道其他人是如何在游戏中解决这个问题的.
有什么建议?
伪代码:
<a #{routeIsActive Application.index()} class="active"#{/if} href="@{Application.index()}">My Page</a>
Run Code Online (Sandbox Code Playgroud)
Jav*_*zzi 11
<a #{if request.action=="Application.index"}class="active"#{/if} href="@{Application.index()}">My Page</a>
Run Code Online (Sandbox Code Playgroud)
简单.:d
不幸的是,我找不到一个简单的方法来做到这一点。我能找到的最简单的解决方案是编写一个快速标签(但这可能是由于我缺乏 Groovy 经验)。
我用这段代码得到了这个。
在你看来
<a class="#{activeRoute href:@Application.index(), activeClass:'active' /}" href="@{Application.index()}">My Page</a>
Run Code Online (Sandbox Code Playgroud)
然后,为 activeRoute 创建一个新的 FastTag
public class MyFastTag extends FastTags {
public static void _activeRoute(Map<?, ?> args, Closure body, PrintWriter out, GroovyTemplate.ExecutableTemplate template, int fromLine) {
Router.ActionDefinition actionDef = (Router.ActionDefinition) args.get("href");
String activeStyle = (String) args.get("activeClass");
String inactiveStyle = (String) args.get("inactiveClass");
if (Http.Request.current().action.equals(actionDef.action) && activeStyle != null) {
out.print(activeStyle);
}
else if (!Http.Request.current().action.equals(actionDef.action) && inactiveStyle != null) {
out.print(inactiveStyle);
}
}
}
Run Code Online (Sandbox Code Playgroud)
确保添加相关的导入。
这允许您指定一个活动和非活动类,这比您要求的要多一点