2014-09-30 48 views
1

我正在使用初始化程序连接到套接字服务器。经过一段时间后,我想重定向到另一条路径(它处理错误)。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++; 
     }); 
    } 
}; 

回答

2

您可以从容器抢路由器并从中调用transitionTo。

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

人为的例子:http://emberjs.jsbin.com/bukuvuho/3/edit

+0

这看起来像它的工作,但我得到这个错误:未捕获的类型错误:未定义是不是一个函数 – NotHereAnymore 2014-09-30 23:33:22

+0

当我设置它去,我没有一个路线( foo)它说:找不到“Foo”路线。当我将它设置为我有(测试)的路线时,它会给出上述错误。测试路由在路由器中定义。 – NotHereAnymore 2014-09-30 23:34:35

+0

你是否认为你可以用我给出的例子重现,我不知道我能否猜测问题是什么。 – Kingpin2k 2014-09-30 23:56:37

相关问题