1

I have two routes that are both nested under the same resource, like so:

Router.map(function() {
  this.resource('dashboard', function() {
    this.route('foo');
    this.route('bar');
  });
});

Currently, in my app/templates/application.hbs, I have the navigation set up like this:

<ul class="nav navbar-nav">
  {{#link-to "dashboard.foo" tagName="li"}}
    <a {{bind-attr href="view.href"}}>Dashboard</a>
  {{/link-to}}
</ul>

That, obviously, links to dashboard.foo. However, that link also needs to be active on dashboard.bar. It has to point to dashboard.foo instead of dashboard.

I've tried creating a computed property in the application controller, like the answer to this question, but the currentPath never showed that it was on the dashboard. This is my attempt at it:

export default Ember.Controller.extend({
  isDashboardRoute: function() {
    var routeName = this.get('currentRouteName');
    var currentPath = this.get('currentPath');
    console.log(routeName); // "loading"
    console.log(currentPath); // "loading"
  }.property('currentPath')
});

I then tried to add a dummy link-to that would show it as active (as described on this Stack Overflow question), but it seems that it instead fires two events at once. This is that attempt:

// application.hbs
{{#link-to "dashboard" tagName="li" href=false eventName="dummy"}}
  {{#link-to "dashboard.foo"}}Dashboard{{/link-to}}
{{/link-to}}

Any ideas?

Edit

After inserting the answer below into my code, here's what I now have:

{{#link-to "dashboard.foo" tagName="li" current-when="dashboard"}}
  <a {{bind-attr href="view.href"}}>Dashboard</a>
{{/link-to}}

I couldn't have the nested link-to because it would mark both the li as well as the a as active, when I only needed the former to be active.

1 Answer 1

2

You can use the current-when property.

{{#link-to "dashboard" tagName="li" href=false eventName="dummy" current-when="dashboard"}}
  {{#link-to "dashboard.foo"}}Dashboard{{/link-to}}
{{/link-to}}

There is also a feature flag for ember-routing-multi-current-when

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks! Instead of that first line, I only needed {{#link-to "dashboard.foo" tagName="li" current-when="dashboard"}}.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.