How can I get My previous route?
ember-router, ember.js
Solution
After having inspected the router object again, I don't see any property in there that will allow you to grab the last route. In pre 4 there was a property for the last route, but it was a difficult property to work with.
My solution is therefore the same as it was in pre 4: I'd create my own mixin to handle the routes that you navigate into, and from that list of routes, you can get whatever route you're after: the current one, the last one, et cetera...
jsFiddle here: http://jsfiddle.net/sMtNG/
Mixin
The first thing to do is create the mixin that will allow us to push the routes into a `HistoryController`. We can do this by creating a `setupController` method which of course gets invoked every time you move into a route.
App.HistoryMixin = Ember.Mixin.create({
setupController: function() {
this.controllerFor('history').pushObject(this.get('routeName'));
}
});
We are pushing the route into the `HistoryController`.
History Controller
Since we're currently pushing the `routeName` into a non-existent `HistoryController`, we'll need to go ahead and create that, which is absolutely nothing special.
App.HistoryController = Ember.ArrayController.extend();
Index Controller
Since the `HistoryController` stores the list of routes we've navigated into, we'll need it accessible on other controllers, such as the `IndexController`, we'll therefore use `needs` to specify in which controller it should be accessible.
App.ApplicationController = Ember.Controller.extend({
needs: ['history']
});
Implement Mixin
We now have everything we need to keep a track of the routes, and so we'll specify that our routes need to implement this mixin.
App.CatRoute = Ember.Route.extend(App.HistoryMixin);
Template
Last but not least, now that we have a `HistoryController` which our `IndexController` can access, and the mixin pushes each accessed route into the `HistoryController`, we can use our application view to output a list of the routes, and specify the last route. Of course in your case you'll need the last route minus one, but there's no sense in me doing everything!
<h1>Routes History ({{controllers.history.length}})</h1>
<ul>
<li>Last Route: {{controllers.history.lastObject}}</li>
{{#each controllers.history}}
<li>{{this}}</li>
{{/each}}
</ul>
I hope this gets you onto the straight and narrow.
Problem
How can I get my previous router in my current controller. ``` App.MyController = Em.ObjectController.extend({ next:function() { // This is my action helper in HBS this.transitionTo('nextPage'); }, back:function() { // This is my action helper in HBS // Here I need to dynamically identify my previous route. // How can I get my previous route. } }); ```