制作'链接到'活跃在两条路线上,而不是一条

Making 'linkTo' active on two routes, not one

本文关键字:一条 链接 活跃 制作 两条路线      更新时间:2023-09-26

我的Ember应用程序中有这样的菜单:

template: search.hbs

<div class="tabs">
    {{#linkTo "search.radio" activeClass="selected" tagName="span"}}{{ t "RadioStations" }}{{/linkTo}}
    {{#linkTo "search.compilations" activeClass="selected" tagName="span"}}{{ t "Compilations" }}{{/linkTo}}
    {{#linkTo "search.track.list" activeClass="selected" tagName="span"}}{{ t "Tracks" }}{{/linkTo}}
    {{#linkTo "search.artist" activeClass="selected" tagName="span"}}{{ t "Artists" }}{{/linkTo}}
    {{#linkTo "search.album" activeClass="selected" tagName="span"}}{{ t "Albums" }}{{/linkTo}}
    {{#linkTo "search.all" activeClass="selected" class="last" tagName="span"}}{{ t "All" }}{{/linkTo}}
</div>

我的search.tracks有这样的路由(很抱歉CoffeeScript,但我认为发生的事情是可以理解的):

  @resource 'search.track', path: 'track', ->
    @route 'index', path: ''
    @route 'list', path: '/list'

一条管线以块模式显示轨迹,另一条管线则以表格模式显示轨迹。我有SearchTrackIndexControllerSearchTrackListController

我需要的是,相应的选项卡{{#linkTo "search.track.list"}}search.track.indexsearch.track.list路由上都变为活动的,同时仍然是到search.track.list 的链接

您可以使用{{link-to}}助手的current-when。这在测试版中可用;金丝雀建造。

演示仓

查看此PR 3673

事实证明,解决方案非常简单。

{{#linkTo "search.track.list"  activeClass="selected" tagName="span" currentWhen="search.track"}}

这正是我想要的。