首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Flow-路由器时突出显示引导导航中的活动路由

使用Flow-路由器时突出显示引导导航中的活动路由
EN

Stack Overflow用户
提问于 2015-09-27 18:35:05
回答 3查看 1.8K关注 0票数 2

所以我找到了这个带引导带-3的导航条功能,但是现在我用的是流路由器而不是铁路由器。因此,我寻求将这个辅助函数转换为Flow-Router术语:

代码语言:javascript
复制
Template.navItems.helpers({
    activeIfTemplateIs: function (template) {
      var currentRoute = Router.current();
      return currentRoute &&
        template === currentRoute.lookupTemplate() ? 'active' : '';
    }
});

我已经尝试过解决这个问题(虽然我的站点/应用程序的许多部分仍然没有功能,所以没有对它进行测试),但我需要以“是”或“否”的形式确认,并且可能需要更多关于我做错了什么的信息。

代码语言:javascript
复制
Template.navItems.helpers({
    activeIfTemplateIs: function (template) {
      var currentRoute = FlowRouter.current();
      return currentRoute &&
        template === currentRoute.name ? 'active' : '';
    }
});

我引导自己离开了Flow-路由器API。这个解决方案是正确的,还是因为某种原因被严格地与铁路由器一起使用?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-27 20:59:29

在深入考虑了你的实际问题后,我意识到我正在用完全不同的方式在我的应用程序中这样做,也许你会发现这种模式很有用。我的应用程序也使用引导程序,并且有一个导航,我想在其中高亮显示活动路由(并取消高亮显示所有其他路由)。

在铁路由器里,我会:

代码语言:javascript
复制
onAfterAction(){
  const selector = '.nav a[href="/' + Router.current().route.getName() + '"]'; // the nav item for the active route (if any)
  $('.nav-active').removeClass('nav-active'); // unhighlight any previously highlighted nav
  $(selector).addClass('nav-active'); // highlight the current nav (if it exists, many routes don't have a nav)
}

在Flow-路由器中,onAfterActiontriggersExit所取代,因此您可以:

代码语言:javascript
复制
triggersExit(){
  const selector = '.nav a[href="' + FlowRouter.current().path + '"]';
  $('.nav-active').removeClass('nav-active');
  $(selector).addClass('nav-active');
}

我发现这比使用空格键模板要方便得多。

FYI,您有几个选项可以获得路线名称:

代码语言:javascript
复制
FlowRouter.getRouteName() // reactive

代码语言:javascript
复制
FlowRouter.current().route.name // NOT reactive
票数 6
EN

Stack Overflow用户

发布于 2016-04-23 21:33:20

现在您可以使用活动路线包了。

例如:

代码语言:javascript
复制
<a class="nav-tab {{isActivePath class='nav-current' path='/new'}}" href="/new">
  New
</a>
票数 3
EN

Stack Overflow用户

发布于 2016-04-11 00:32:26

为了给你一个更完整的图片,这是我的项目所做的。

模板HTML代码

代码语言:javascript
复制
<template name="topNavbar">
<nav class="navbar navbar-default">
  <ul class="nav navbar-nav">
    <li><a class="navbar-brand" href="/">Sample</a></li>

    <li class="{{ activeIfTemplateIs 'home' }}">
      <a href="/home">Home</a>
    </li>

    <li class="{{ activeIfTemplateIs 'users' }}">
      <a href="/users">Users</a>
    </li>

  </ul>
</nav>
</template>

JavaScript码

代码语言:javascript
复制
Template.topNavbar.helpers({
  activeIfTemplateIs: function (template) {
    var currentRoute = FlowRouter.getRouteName();
    return currentRoute && template === currentRoute ? 'active' : '';
  }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32811444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档