Meteor & Flow Router:将动态生成的路径标记为 'active'
Meteor & Flow Router: Marking Dynamically generated paths as 'active'
不用说,我缺乏使用 Meteor 的经验。我来自 Rails 背景,与 Meteor 相比,您可以在视图中做更多的逻辑(和魔术)。
情况:我有一些路线看起来像 /things/:_id
,我将那条路线命名为 'thing',因为它只显示用户拥有的许多路线中的一条 thing
things
:
FlowRouter.route('/things/:_id', {
name: 'thing',
action() {
BlazeLayout.render('appPage', {app: 'thing', sidebar: "thingsListOnThing", header: 'thingTitle'});
}
});
如您所见,我还加载了一个我构建的模板,用于在 sidebar
上列出用户拥有的所有物品,以便于导航。那个模板,thingsListOnThing
就是这个问题的目标。
明白要点了吗?我可以使用 zimme:active-route
将显示带有用户 things
完整列表的模板的路由标记为 active
,如下所示:
// A list of all a user's things
<div class="{{isActiveRoute name='things' class='is-active'}}">
List of Things
</div>
这个包很棒,但它不会帮助我处理看起来像 /things/:_id
的路线,因为,然后每个 link 到每个单独的东西都会 is-active
在任何 thing
页面,而不仅仅是当前路径的 :_id
与活动 thing
.
的 _id
匹配的页面
我真的被困在这里了。我的第一个猜测是使用模板助手,但我不知道从哪里开始。
如果需要,请像我一样上传您需要的任何代码。我认为这是一个非常普遍的问题,你们可能不需要查看我的所有代码来理解我想要完成的事情。
使用: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>
不用说,我缺乏使用 Meteor 的经验。我来自 Rails 背景,与 Meteor 相比,您可以在视图中做更多的逻辑(和魔术)。
情况:我有一些路线看起来像 /things/:_id
,我将那条路线命名为 'thing',因为它只显示用户拥有的许多路线中的一条 thing
things
:
FlowRouter.route('/things/:_id', {
name: 'thing',
action() {
BlazeLayout.render('appPage', {app: 'thing', sidebar: "thingsListOnThing", header: 'thingTitle'});
}
});
如您所见,我还加载了一个我构建的模板,用于在 sidebar
上列出用户拥有的所有物品,以便于导航。那个模板,thingsListOnThing
就是这个问题的目标。
明白要点了吗?我可以使用 zimme:active-route
将显示带有用户 things
完整列表的模板的路由标记为 active
,如下所示:
// A list of all a user's things
<div class="{{isActiveRoute name='things' class='is-active'}}">
List of Things
</div>
这个包很棒,但它不会帮助我处理看起来像 /things/:_id
的路线,因为,然后每个 link 到每个单独的东西都会 is-active
在任何 thing
页面,而不仅仅是当前路径的 :_id
与活动 thing
.
_id
匹配的页面
我真的被困在这里了。我的第一个猜测是使用模板助手,但我不知道从哪里开始。
如果需要,请像我一样上传您需要的任何代码。我认为这是一个非常普遍的问题,你们可能不需要查看我的所有代码来理解我想要完成的事情。
使用: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>