3

我很难让“活动”类停留在不同的页面上。我通过布局在每个页面上加载了导航栏,这可能是问题吗?

4

2 回答 2

16

我只是在我的布局 gsp 中有这个来创建导航栏,它工作得很好。我只有控制器级别的导航栏中的项目,而不是单个操作。

<li ${controllerName.equals('schedule') ? 'class="active"' : ''}>Schedule</li>

对于 Grails 生成的默认控制器,可以使用

<li ${controllerName == null ? 'class="active"' : ''}>Home</li>
于 2012-10-04T12:12:33.463 回答
2

是的,这就是问题所在。

每当您重新加载页面时,任何<li>元素都class=active将再次设置为活动状态。

如果您有/grails-app/views/layouts/main.gsp以下情况:

<div class="navbar">
  <div class="navbar-inner">
    <ul class="nav">
      <li class="active"><a href="/home">Home</a></li>
      <li><a href="/fred">Fred</a></li>
      <li><a href="/barney">Barney</a></li>
    </ul>
  </div>
</div>

并且您的 Fred 和 Barney 的 GSP 使用 main.gsp 布局,当您单击它们时,您将加载上面的代码,并且“主页”的链接仍将处于活动状态。

解决方案是为 Navbar 控件编写 Taglib,或创建单独的布局页面。

于 2012-09-18T20:29:53.600 回答