Salesforce Lightning Aura Method
aura:method
Use aura:method
to define a method as part of a component’s API. This enables you to directly call a method in a component’s client-side controller instead of firing and handling a component event. Using aura:method
simplifies the code needed for a parent component to call a method on a child component that it contains. link
ChildComp:-
<aura:method name="testMethod" action="{!c.someAction}" description="Test aura method with test parameter">
<aura:attribute name="Test1" type="String" /> <!--optional parameter-->
</aura:method>
Note:-
- Aura method can have an optional parameters. We use <aura:attribute> tag in Aura:method to declare parameter.
- We do not need access system attribute in <aura:attribute> tag.
How to call aura:method from parent controller:
ParentComp:-
<aura:component>
<aura:attribute name="parentAttributeName" type="String" default="Parent Value"/>
<p>
{!v.parentAttributeName}
</p>
<c:ChildComp aura:id="ChildComp" /> <!-- Giving id to child comp-->
<lightning:button label="Go to aura method" onclick="{!c.gotoAuraMethod}"/>
</aura:component>
ParentCompController.js
({
gotoAuraMethod : function(component, event, helper) {
var chldComp=component.find("ChildComp"); // Finding child component
var res=chldComp.testMethod("From parent"); // Hitting aura method
component.set("v.parentAttributeName",res);
}
})
ChildComp:
<aura:component>
<aura:method name="testMethod" action="{!c.someAction}" description="Test aura method with test parameter">
<aura:attribute name="childAttributeName" type="String" />
</aura:method>
</aura:component>
ChildCompController.js:
({
someAction : function(component, event, helper) {
var params=event.getParam('arguments');
if(params)
{
var param1=params.childAttributeName;
}
return param1+"Appended child value";
}
})
Application:
<aura:application extends="force:slds" >
<c:ParentComp/>
</aura:application>