我注意到在使用EmberJS时,如果你所在的路由与页面上相同路径的链接匹配,它会自动添加“active”类。我目前正在构建一个导航栏,它正在使用此功能,但我的担忧在于,并非所有的路由都与我的导航栏匹配。例如,当我在路由“/messages”中时,我想让项目“/services”处于活动状态。或者当我在路由“/forums/history”中时,我想让项目“/forums/archives”处于活动状态。即使这个路由没有在导航栏中,我也想突出显示与它相关的项目。我的导航是从看起来像这样的JSON对象生成的:
[
{
"label": "Forums",
"link": "forums",
"children": [
{
"label": "Latest"
"link": "forums.latest"
}
{
"label": "Archives"
"link": "forums.archives"
}
]
}
]
我有几个想法,但我不太喜欢,所以我来这里听听你的建议。以下是我的想法:
- 在视图中定义一个属性,以定义导航中应该激活哪个项目:
views/forums/history.js:
Ember.View.extend({
navigationActiveItem: 'forums.archives'
});
- 在我的json对象中定义将突出显示该项的链接列表
json文件:
[
{
"label": "Forums",
"link": "forums",
"children": [
{
"label": "Archives"
"link": "forums.archives",
"makeActive": ["forums.history", "forums.records"] //If you are on one of those route, it will active forums.archives
}
]
}
]
router.js:
Router.map(function () {
this.route('forums', function () {
this.route('latest');
this.route('archives');
this.route('history');
});
});
你有任何更好的建议来完成这件事吗? 谢谢