2013-07-19 2 views
6

Ember.js에서 컨트롤러에서 처리되지 않은 이벤트는 라우터 체인을 응용 프로그램 경로로 전파합니다 (자세한 내용은 http://emberjs.com/guides/views/handling-events/ 참조).Ember.js - 컨트롤러/라우터 체인 위로 이벤트 전파

이벤트가 라우터로 전파되는 것을 계속 허용하는 컨트롤러에 이벤트 처리기를 정의하는 방법이 있습니까?

App.SampleController = Ember.ObjectController.extend({ 
    myEvent: function(obj) { 
    this.set('aVariable', true); 
    } 
}); 

App.ApplicationRoute = Ember.Route.extend({ 
    events: { 
    myEvent: function(obj) { 
     this.transitionTo('something'); 
    } 
    } 
}); 

는 내부 상태 변수를 설정뿐만 아니라 응용 프로그램 경로에 체인을 이벤트를 걷어차 CarsController에서 myEvent가 처리기에 대한 방법이 있나요? 나는 이것을 알고 있습니다 :

App.__container__.lookup('router:main').send('myEvent', obj); 

그러나 Ember 내부를 사용합니다. 나는 이것을하기위한보다 표준적인 방법이 있기를 바랬다. 이를 달성하기

답변

6

한 가지 방법이 될 수 :

App.SampleController = Ember.ObjectController.extend({ 
    needs: 'application', 
    myEvent: function(obj) { 
    this.set('aVariable', true); 

    this.get('controllers.application').send('myEvent'); 
    } 
}); 

demo 작업.

희망이 있습니다.

+0

작동하지 않습니다 (Ember.js 1.0.0-rc.6을 사용하여 시도). 나는 그것이 사실일지도 모른다고 생각했기 때문에 진실과 거짓으로 돌아가려고했으나 어느 것도 효과가 없었습니다. – kleinsch

+0

@ kleinsch, 내 대답을 편집했는데, 실수로 미안하다 – intuitivepixel

+0

@kleinsch도 데모 jsbin : http://jsbin.com/oduhom/3/edit 응용 프로그램 컨트롤러로 이벤트를 보내려면 – intuitivepixel