0

不用说,我缺乏使用 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如下所示:activezimme: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页面上,而不仅仅是当前路径与active:_id匹配的那个页面。_idthing

我真的有点卡在这里。我的第一个猜测是使用模板助手,但我不知道从哪里开始。

如果需要,请像我一样上传您需要的任何代码。我认为这是一个如此笼统的问题,你们可能不需要查看我的所有代码来理解我想要完成的工作。

4

1 回答 1

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>
于 2016-04-28T22:00:03.787 回答