Ember.js - Как я могу перейти на другой маршрут из инициализатора?

Я использую инициализатор для подключения к серверу сокетов. По истечении заданного промежутка времени я хотел бы перенаправить на другой маршрут (который обрабатывает ошибку).

Как я могу сделать это из инициализатора?

Текущий код ниже:

/* Socket Initializer */
export default {
    name:   'Socket',
    initialize: function(Container, Application) {

        Application.deferReadiness();       

        var IO = Container.lookup('socket:main');

        IO.connect({
            reconnectionDelayMax: 1000
        });


        IO.socket.on('connect', function(){
            Application.advanceReadiness();
        });


        var RetryCounter = 0;

        IO.socket.on('connect_error', function(Error) {

            if (RetryCounter == 2) {


                //this.transitionTo('development');
                //Application.transitionTo('development');
                //Container.transitionTo('development');

                // None of the above work.

            }
            RetryCounter++;  
        });
    }
};

1 ответ

Решение

Вы можете взять роутер из контейнера и вызвать с него transitionTo.

var router = container.lookup('router:main');
router.transitionTo('foo');

Придуманный пример: http://emberjs.jsbin.com/bukuvuho/3/edit

Другие вопросы по тегам