我目前正在尝试覆盖Ember.SimpleAuth.ApplicationRouteMixin类中的sessionAuthenticationSucceeded,这样我就可以通过传入的模型转换到我的routeAfterAuthentication。
基本上是this.transitionTo(Configuration.routeAfterAuthentication, model);,但即使在执行了Ember.SimpleAuth.ApplicationRouteMixin.reopen()之后,我的函数覆盖也不会被调用。那么,我说的全错了吗?Mixins不能以这种方式重新打开吗?或者我应该以不同的方式将模型传递给routeAfterAuthentication转换。
编辑:愚蠢的声誉限制,我本来打算自己回答这个问题,但显然必须等待8个小时,所以这是现在的答案:
嗯,不完全确定这是否是正确的方法,但它是有效的。我正在看这个例子:custom-server和我最终这样做是为了完成我想要的。
var applicationRoute = container.lookup('route:application');
var session = container.lookup('ember-simple-auth-session:main');
var store = container.lookup('store:main');
session.on('sessionAuthenticationSucceeded', function() {
var user = store.find('user', session.get('user_id'));
container.lookup('controller:application').set('content', user)
applicationRoute.transitionTo('profile.resume', user);
});发布于 2014-06-26 16:20:56
最简单的解决方案是简单地在应用程序路由上定义sessionAuthenticationSucceeded,而不是重新打开mixins:
/// routes/application.js
import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin';
export default Ember.Route.extend(ApplicationRouteMixin, {
actions: {
sessionAuthenticationSucceeded: function() {
…
}
}
})发布于 2014-06-26 23:23:51
嗯,不完全确定这是否是正确的方法,但它是有效的。我正在看这个例子:custom-server和我最终这样做是为了完成我想要的。
var applicationRoute = container.lookup('route:application');
var session = container.lookup('ember-simple-auth-session:main');
var store = container.lookup('store:main');
session.on('sessionAuthenticationSucceeded', function() {
var user = store.find('user', session.get('user_id'));
container.lookup('controller:application').set('content', user)
applicationRoute.transitionTo('profile.resume', user);
});https://stackoverflow.com/questions/24373210
复制相似问题