10

ルーターの内部一貫性を損なうことなく、Ember.js ルーターで条件付きリダイレクトを行う方法はありますか?

4

3 に答える 3

23

(今日の時点で)あなたができることは、次のようなものです。

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({
        // ...
    })
})

Ember.run.nextにいる間はenter、状態遷移が常に保留になっているので、後で遷移する必要があるので、お見逃しなく。

authentの場合に示されているように使用しますが、どのような条件でも使用することを想像できます...

于 2012-06-25T15:36:05.723 に答える
3

新しいルーターには、

beforeModel 

ルートへの遷移中に条件付きロジックを含めるためにオーバーライドできるフック。beforeModel フックは、

model 

フックが呼び出され、渡されます

transition

物体。を使用して別のルートにリダイレクトするかどうかを決定できます

transitionToRoute()

または、呼び出してリダイレクトしたくない場合は、遷移を中止できます

transition.abort()
于 2014-04-28T09:31:30.617 に答える
2

何をしようとしているかによっては、条件付き遷移を探している場合があります。これは別のstackoverflow questionでカバーされており、そのTLDRはこのフィドルをチェックすることです。

于 2012-07-26T16:06:14.730 に答える