当路线没有't匹配
Make navigation item active when route doesn't match
我注意到,使用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');
});
});
你对做这样的事有什么更好的建议吗?感谢
使用{{#link to}}的current-when参数。它将允许您定义导致链接处于活动状态的替代路线。
自ember 1.8以来,current何时可以接受空格分隔的路由字符串。对于在1.7中工作的实现,请查看EmberJS中是否有方法将数组传递给currentWhen?
我这样做的方法是在应用程序控制器中设置属性。
(这假设您的导航栏模板在application.handlebars
中)
例如,如果你希望你的"论坛"选项卡在任何forums
路线上都是活动的,你可以创建一个名为isForums
的属性,它看起来像这样:
isForums: function(){
return this.get('currentPath').split('.')[0] === 'forums';
}.property('currentPath')
然后,您可以从application.handlebars
访问它,如下所示:
<li {{bind-attr class="isForums:active"}}>
{{#link-to "forums"}}Forums{{/link-to}}
</li>
如果isForums
的计算结果为true,则会将active
类添加到<li>
中。
相关文章:
- 仅当存在开盘报价时,才匹配收盘价
- 当有多个#时,为什么regex不匹配
- 当变量中的.find()项有多个匹配项时,jQuery问题
- 在正则表达式中,如果第一个圆括号没有't匹配,当在JavaScript中使用replace()与在Ruby中使用
- 当按键不匹配时删除输入字符
- RethinkDB:条件追加启动(仅当特定字段匹配时)
- 使用glob匹配,当传递文件浏览时一气呵成
- 当正则表达式与空字符串匹配时,是否可以使用 regexp.exec 循环模拟 string.match
- 当字符串与标头 PHP 不匹配时,将列留空
- 当标签值与使用 JavaScript 的输入匹配时,返回 XML 标签属性
- 希望当字符串部分或完全匹配对象中的值时返回此函数
- 仅当正则表达式不以 javascript 中的模式开头时才匹配正则表达式
- 当匹配的元素不在'未找到
- 当当前时间和开始时间(源标记中的startat属性)匹配时,我如何播放视频
- 将字符串与数字匹配,但仅当存在>在数字前面
- 当路线没有't匹配
- 当一组元素不总是在同一个父元素中时,如何找到下一个匹配的元素
- 当使用Mocha/Chai测试异步函数时,与期望值不匹配总是会导致超时
- ng-reeat中的角度过滤器——当没有匹配结果时显示消息
- 在JavaScript中,当使用Regex时,如何在不使用空格字符ORs的情况下匹配空格