Hi,
I’m currently having a problem that sounds like it should have a more or less easy solution but I haven’t found it yet.
In my Ember-App, you can create a new task from every route. I then go to the TaskCreateRoute, and when I save a task I want to go back to the route where I was before, or to the index route if I started at the TaskCreateRoute.
I solved this via updateCurrentPath in my ApplicationController, where I add an entry to an array like this:
pathHistory.push({
route: currentPath,
id: pathId
});
And then I have a function gotoPrevious which sends me to the previous route (simplified):
this.transitionToRoute(lastPage.route, lastPage.id);
(There are some other checks being made if no lastPage exists, but they work fine so far, so that’s not the problem).
However, if I start, for example, in a list view where all tasks are displayed, then create a new task and return there, the just created task is not in the list. Now I think the appropriate thing to do would be to call Route.refresh() - but I don’t know how to get the corresponding route object from the ApplicationController.
To clarify things, here is the basic structure:
App.ApplicationController = Ember.Controller.extend({
updateCurrentPath: function() { ... },
actions: {
gotoPrevious: function () { ... }
}
});
All other controllers have needs: [“application”], and I use it like for example in the TaskCreateController:
newTask.save().then(function(newTask) {
self.get('controllers.application').send('gotoPrevious');
});
I really don’t know how to handle this now - I think that this use case is quite common, and to be honest I think that Ember should provide some kind of built-in “back” mechanism. Hopefully, somebody can guide me in the right direction!