我正在使用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());
},
});
然而,代码可以工作,观察者会在每条路径中触发,而不仅仅是当用户处于注册路径时。
我现在的解决方案是获取当前路线,检查它是否等于'注册',然后才进行转换。这似乎并不理想。这样做是否有“蠢货”?