Ember.js-如何从初始化器转换到另一个路由?

Ember.js-如何从初始化器转换到另一个路由?,ember.js,socket.io,ember-cli,engine.io,Ember.js,Socket.io,Ember Cli,Engine.io,我正在使用初始化器连接到套接字服务器。一段时间后,我想重定向到另一个路由(处理错误) 如何从初始化器执行此操作 当前代码如下: /* Socket Initializer */ export default { name: 'Socket', initialize: function(Container, Application) { Application.deferReadiness(); var IO = Contain

我正在使用初始化器连接到套接字服务器。一段时间后,我想重定向到另一个路由(处理错误)

如何从初始化器执行此操作

当前代码如下:

/* 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++;  
        });
    }
};

您可以从容器中抓取路由器并从中调用Transitiono

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

人为示例:

这看起来会起作用,但我得到了以下错误:Uncaught TypeError:undefined不是函数当我将其设置为转到我没有的路由(foo)时,它显示:“foo”路由未找到。当我把它设置为一条我确实有(测试)的路线时,它给出了上面的错误。测试路由是在路由器中定义的。你认为你能用我给出的示例重现吗?我不确定我是否能猜出问题所在。如果我在渲染后运行转换,它会工作。我想路由器在我想使用它的时候还没有完全启动。不过,你已经回答了这个问题,我知道你有一个解决办法。非常感谢。