컴퍼넌트와 컴퍼넌트 간에 데이터를 주고 받기 위해서 Aura 이벤트를 사용한다.
<!-- aura evnet example -->
<aura:event type="COMPONENT">
<aura:attribute name="message" type="String"/>
</aura:event>
이벤트에는 전달받을 데이터 타입을 등록 해준다.
<!-- ParentComponent.cmp example -->
<aura:component>
<aura:handler name="EventTest_evt" event="c:EventTest_evt" action="{!c.handleEvt}"/>
<c:ChildComponent/> <!--자식 컴퍼넌트-->
</aura:component>
부모 컴퍼넌트에 자식컴퍼넌트가 이벤트를 발생시키면 감지할 이벤트를 선언
이벤트가 호출되면 실행시킬 컨트롤러 메소드를 action에 선언한다.
<!-- ChildComponent.cmp example -->
<aura:component>
<aura:registerEvent name="EventTest_evt" type="c:EventTest_evt"/> <!--이벤트 등록-->
<button onclick="{!c.evtFire}">이벤트 발생</button> <!--이벤트 호출-->
</aura:component>
자식 컴퍼넌트에 이벤트를 등록시킨다.
// ChildComponent.controller example
({
evtFire : function (component, event, helper) {
var cmpEvent = component.getEvent("EventTest_evt");
cmpEvent.setParam("message", "child to parent");
cmpEvent.fire();
}
})
이벤트에 전달할 파라미터를 할당해주고, 이벤트 발생시킨다.
위와 같은 방식은 부모 컴퍼넌트와 자식 컴퍼넌트 간에 이벤트 타입 (COMPONENT) 이고
부모 컴퍼넌트와 부모 컴퍼넌트 간에 이벤트 타입 (APPLICATION) 은 형식이 살짝 다르다.
APPLICATION 방식 : https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/events_application.htm