我的顶级lib目录中有一个名为routes.js的铁路由器代码。在该文件中,我调用前端Session变量,特别是在我的onBeforeAction方法中,如下所示:
Router.map(function () {
this.route('homeTemplate',{
name: 'homeTemplate',
where: 'client',
path: '/',
load: function() {
$('html, body').animate({
scrollTop: 0
}, 400);
return $('.content').hide().fadeIn(1000);
},
waitOn: function() {
return Meteor.subscribe(COLLECTION_NAMES.PlayerCollection.value);
},
onBeforeAction: function(){
Session.set('active_menu_option','home');
this.next();
},
onAfterAction: function(){
},
data: function(){
return {active_menu_option: {'home':'active'}};
},
yieldTemplates: {
'jumbotronTemplate': {
to: 'jumbotron'
}
}
});
});
在此设置中调用/使用Session变量是否犹豫不决?我似乎变得不稳定/非确定性行为。
答案 0 :(得分:1)
我不确定会话的使用情况,但如果你想要的只是根据路线位置设置活动的菜单项,那么这可能会有所帮助:meteor add zimme:iron-router-active
<nav>
<ul>
<li class="{{isActiveRoute regex='dashboard'}}">...</li>
<li class="{{isActiveRoute regex='dashboard|index'}}">...</li>
<li class="{{isActiveRoute regex='users' className='on'}}">...</li>
<li class="{{isActivePath regex='products'}}">...</li>
{{#if isActiveRoute regex='index'}}
<li>...</li>
{{/if}}
<li class="{{isNotActiveRoute regex='dashboard'}}">...</li>
</ul>
</nav>
这个助手使用正则表达式,这意味着像这样的字符串也可以。
'^dashboard$' // Exact match for 'dashboard'
'^product' // Begins with 'product'
'list$' // Ends with 'list'