2014-05-15 5 views
0

잡는 방법이 있습니까 모두 조치 처리기가 있습니까?Ember : 모든 액션 핸들러?

구성 요소에서 보낸 Ember.TargetActionSupporttriggerAction이 거품을 일으키지 않는 문제가 있습니다. 따라서 중첩 된 구성 요소가있을 때 하위 구성 요소에서 작업을 보내면 상위 구성 요소가 하위 구성 요소를 포착하지만 컨트롤러는 그렇지 않습니다.

"작업 프록시"를 만들고 싶습니다. 상위 구성 요소가 작업을 포착하고 복사본을 보냅니다. 이 방법은 작동하지만 부모 구성 요소는 그 자식으로부터 어떤 동작이 올지 알지 못하므로 "모두 잡아"처리기가 ​​필요합니다.

답변

0

나는 엠버 소스를 파고 들어 대답을 찾았습니다. 유용 할 수 있습니다.

구성 요소는 View에서 상속받습니다. 실제로, 그것은 자신을위한 컨트롤러의 역할을하는 간단한 View입니다. https://github.com/emberjs/ember.js/blob/v1.5.0/packages/ember-views/lib/views/component.js#L102

Ember.Component = Ember.View.extend(Ember.TargetActionSupport, Ember.ComponentTemplateDeprecation, { 
    init: function() { 
    this._super(); 
    set(this, 'context', this); 
    set(this, 'controller', this); 
    }, 

set(this, 'controller', this)는 구성 요소 격리합니다.

App.MyTransparentComponent = Ember.View.extend 
    init: -> 
     @_super() 
     @set('context', @) 

는 사실, 구성 요소의 모든 코드와 믹스 인을 만들 수 있습니다 구성 요소가 결합하고 있지만, 고립 된 자기 통제가 행동에 대한 투명 그것을 유지의 그래서 당신은 자기 컨텍스트 조회수를 사용해야을 활용하기 ,하지만이 초기화 코드와 함께이 멋진 stuf 행복 :

관련 문제