Ember-Simple-Auth: перегрузка sessionAuthenticationSucceeded

Я сейчас пытаюсь переопределить sessionAuthenticationSucceeded в Ember.SimpleAuth.ApplicationRouteMixin класс, так что я могу перейти в свой routeAfterAuthentication с моделью, переданной в.

В принципе this.transitionTo(Configuration.routeAfterAuthentication, model);, но даже после этого Ember.SimpleAuth.ApplicationRouteMixin.reopen() мое переопределение функции никогда не вызывается. Так я все об этом говорю? Разве миксин не может быть вновь открыт таким образом? Или я должен передать модель 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);
});

2 ответа

Самым простым решением было бы просто определить sessionAuthenticationSucceeded на пути применения вместо повторного открытия миксинов:

/// routes/application.js
import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin';

export default Ember.Route.extend(ApplicationRouteMixin, {
  actions: {
    sessionAuthenticationSucceeded: function() {
      …
    }
  }
})

Ну, не совсем уверен, что это правильный способ сделать это, но это работает. Я просматривал этот пример: 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);
    });
Другие вопросы по тегам