流星&流路由器:将动态生成的路径标记为“活动”路径

时间:2016-04-16 16:55:43

标签: meteor meteor-blaze flow-router

毋庸置疑,我对Meteor的体验缺乏。我来自Rails背景,你可以在你的视图中做比Meteor更多的逻辑(和魔法)。

情况:我有一些看起来像/things/:_id的路线,而且我已经命名了这条路线''因为它只显示了一个thing用户拥有的things

FlowRouter.route('/things/:_id', {
  name: 'thing',
     action() {
       BlazeLayout.render('appPage', {app: 'thing', sidebar: "thingsListOnThing", header: 'thingTitle'});
     }
});

正如您所看到的,我还加载了一个模板,用于列出sidebar上所有用户拥有的内容,以便于导航。该模板thingsListOnThing是此问题的目标。

获得要点?我可以使用things标记使用active的{​​{1}}的完整列表来展示模板的路线,如下所示:

zimme:active-route

此套餐非常棒,但它不会帮助我查看类似// A list of all a user's things <div class="{{isActiveRoute name='things' class='is-active'}}"> List of Things </div> 的路线,因为在任何/things/:_id上,每个内容的每个链接都是is-active页面,而不仅仅是当前路径thing与活跃:_id的{​​{1}}匹配的页面。

我真的被困在这里了。我的第一个猜测是使用模板助手,但我对于从何处开始感到困惑。

如果需要,请我上传您需要的任何代码。我认为这是一个普遍的问题,你们可能不需要看到我的所有代码来理解我想要完成的事情。

1 个答案:

答案 0 :(得分:0)

使用:zimme:active-route

模板助手

Template.listOfThings.helpers({
  activeListClass(page) {
    const active = ActiveRoute.name('thing') && FlowRouter.getParam('_id') === this._id;
    return active && 'active';
  },
});

模板HTML:

  <a class="{{isActivePath 'thing'}}" href="/things/{{_id}}">
      <div class="thingListItem {{activeListClass page}}">
      {{title}}
      </div>
  </a>