2

我正在使用 ember-auth 来管理我的 ember 应用程序中的会话。Ember-auth 提供了一个 auth 对象,该对象会自动注入到每个路由和控制器中。

我的应用程序中有一个用户注册路线。如果用户在此路由中登录,我想将用户从此路由转移。为此,我想出了以下代码:

App.RegisterRoute = Em.Route.extend({
    // redirect the user if he is already logged in
    redirect: function() {
        if (this.auth.get('signedIn')) {
            this.transitionTo('index');
        }
    },


    //check if user logged in and redirect him if he did
    loginStatusChanged: (function() {
        if (this.auth.get('signedIn')) {
            this.transitionTo('index');
        }
    }).observes('auth.signedIn'),

    setupController: function(controller) {
        controller.set('user', App.User.create());
    },
});

该代码有效,但是,观察者会在每条路由中触发,而不仅仅是当用户在注册路由中时。

我现在的解决方案是获取当前路线,检查它是否等于“注册”,然后才进行过渡。这似乎并不理想。有没有这样做的“余烬方式”?

4

0 回答 0