0

我目前正在尝试sessionAuthenticationSucceededEmber.SimpleAuth.ApplicationRouteMixin课堂上进行覆盖,以便我可以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);
});
4

2 回答 2

1

最简单的解决方案是简单地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-26T08:20:56.327 回答
0

好吧,不完全确定这是否是正确的方法,但它确实有效。我正在查看这个示例: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-26T15:23:51.340 回答