I\'m trying to create navigation tabs (taken from Twitter Bootstrap):
-
Like other people said, using {{#link-to}}
to link to an existing route
, when that route is current URL, {{#link-to}}
will automatically add active
to its CSS classes.
See Ember issue 4387
Beginning with v0.8.0 ember-bootstrap supports navs, including handling the active state correctly. And that without any link-to/tagName kind of hacks:
{{#bs-nav type="pills"}}
{{#bs-nav-item}}
{{#link-to "foo"}}Foo{{/link-to}}
{{/bs-nav-item}}
{{#bs-nav-item}}
{{#link-to "bar"}}Bar{{/link-to}}
{{/bs-nav-item}}
{{/bs-nav}}
See http://kaliber5.github.io/ember-bootstrap/api/classes/Components.Nav.html
Ember 1.11+:
{{#link-to "dashboard" tagName="li"}}
<a href="{{view.href}}">Dashboard</a>
{{/link-to}}
Ember < 1.11 (bind-attr
required):
{{#link-to "dashboard" tagName="li"}}
<a {{bind-attr href="view.href"}}>Dashboard</a>
{{/link-to}}
I know this is old post, but here are updates for Ember 2.4.0
For creating links you can write
{{#link-to 'photoGallery'}}
Great Hamster Photos
{{/link-to}}
or
{{link-to 'Great Hamster Photos' 'photoGallery'}}
Ember will automatically set class to active when current route matches link's route (in this example photoGallery
).
If you want to control 'active' class on other routes as well, you can do it by setting current-when
attribute.
{{#link-to 'photoGallery' current-when='photoGallery photoPreview'}}
Great Hamster Photos
{{/link-to}}
This link will have active
class on both photoGallery
and photoPreview
routes.
https://github.com/emberjs/ember.js/blob/v2.4.0/packages/ember-routing-views/lib/components/link-to.js#L140
I see this question is quite old, but if you upgraded Ember.js to the RC3 you can use tagName
property, like:
{{#link-to messages tagName="li"}}Messages{{/link-to}}
Here is the API - http://emberjs.com/api/classes/Ember.LinkView.html
Handlebars
<ul class="nav">
<li>{{#linkTo "index"}}Index{{/linkTo}}</li>
<li>{{#linkTo "about"}}About{{/linkTo}}</li>
</ul>
Javascript
App.Router.map(function() {
this.route("about");
});
It will add active class automatically based on route. Note: It is tested using ember-1.0.0-pre.4.js