2014-09-30 60 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

相關問題