Emberjs: Conditional redirect in router

ember-old-router, ember.js

Solution

What you could do (as of today), is something like that:

root: Ember.Route.extend({
    index: Ember.Route.extend({
        enter: function(router) {
            var logged = /* get from appropriated source... */;
            Ember.run.next(function() {
                if (logged) {
                    router.transitionTo('loggedIn');
                } else {
                    router.transitionTo('loggedOut');
                }
            });
        }
    }),

    loggedIn: Ember.Route.extend({
        // ...
    }),

    loggedOut: Ember.Route.extend({
        // ...
    })
})

Do not miss the `Ember.run.next` as while you are in `enter`, the state transition is always pending, so you have to transition after that.

We use it as shown for authent, but you could imagine using it for whatever condition you have to...

Problem

Is there a way to have a conditional redirect in the Ember.js Router, without breaking internal consistency of the router?

Original source

Related problems