我正在使用 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());
},
});
该代码有效,但是,观察者会在每条路由中触发,而不仅仅是当用户在注册路由中时。
我现在的解决方案是获取当前路线,检查它是否等于“注册”,然后才进行过渡。这似乎并不理想。有没有这样做的“余烬方式”?