Newer Version Available

This content describes an older version of this product. View Latest

Subscribe to a Message Channel

To subscribe to a message channel, create a handler method to run when it receives a message.

In this example, we define an Aura component called myNewComponent that contains the custom message channel, SampleMessageChannel__c. The lightning:messageChannel component's onMessage attribute calls the handleChanged method in the client-side controller. We set the scope attribute to "APPLICATION" When set to the string "APPLICATION", the subscribing component can receive messages on a message channel from anywhere in the application. When you use the onMessage handler, you must include the scope attribute.

1<!-- myNewComponent.cmp -->
2<aura:component>
3    <aura:attribute name="recordValue" type="String"/>
4    <lightning:formattedText value="{!v.recordValue}" />
5    <lightning:messageChannel type="SampleMessageChannel__c"
6         onMessage="{!c.handleChanged}" scope="APPLICATION"/>
7</aura:component>
1// myNewComponentController.js
2({
3    handleChanged: function(cmp, message, helper) { 
4     // Read the message argument to get the values in the message payload
5    if (message != null && message.getParam("recordData") != null) {
6        cmp.set("v.recordValue", message.getParam("recordData").value);
7    }
8  }
9})

Write the handler in your component's client-side controller. The handleChanged method fires when there is a new message. It checks whether there is a payload in the message, and if so, assigns the new data to the v.recordValue attribute. The lightning:formattedText element updates to display the new value.