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

이 보이는하지만 난이 오류 : catch되지 않은 형식 오류 : 내가 가지고 있지 않은 경로로 이동을 설정하면 정의되지 않은 함수 – NotHereAnymore

+0

아니다 (foo) 그것은 말한다 : "Foo"경로를 찾을 수 없습니다. 내가 (시험) 가지고있는 길로 가도록 설정하면 위의 오류가 발생합니다. 테스트 라우트는 라우터에 정의되어 있습니다. – NotHereAnymore

+0

내가 제시 한 예를 사용하여 재현 할 수 있다고 생각합니까? 문제가 무엇인지 추측 할 수 있을지 확실하지 않습니다. – Kingpin2k