Call Multiple Apex Methods in Lightning Controller
Apex Controller:
public with sharing class AccountController { @AuraEnabled public static Account getAccount(Id accountId) { Account acc = new Account(); acc = [SELECT Id, Name, Description FROM Account WHERE Id=:accountId]; return acc; } @AuraEnabled public static List<Attachment> getAttachments(Id parentId) { List<Attachment> listAttachment = new List<Attachment>(); listAttachment = [SELECT Id, Name FROM Attachment WHERE ParentId = :parentId]; return listAttachment; } }
Lightning Component:
<aura:component controller="AccountController" implements="force:appHostable,flexipage:availableForAllPageTypes,force:hasRecordId" access="global"> <aura:attribute name="recordId" type="Id" /> <aura:attribute name="acc" type="Account"/> <aura:attribute name="attachments" type="Attachment[]"/> <aura:handler name="init" value="{!this}" action="{!c.doInit}" /> <div> <div>{!v.acc.Name}</div> <div>{!v.acc.Description}</div> <ul> <aura:iteration items="{!v.attachments}" var="a"> <li> <a target="_blank" href="{! '/servlet/servlet.FileDownload?file=' + a.Id }">{!a.Name}</a> </li> </aura:iteration> </ul> </div>
Lightning Controller:
({ doInit : function (component) { var action = component.get('c.getAccount'); action.setParams({ "accountId": component.get("v.recordId") }); action.setCallback(this, function(response) { var state = response.getState(); if (state == "SUCCESS") { var account = response.getReturnValue(); component.set("v.acc", account); } }); var action2 = component.get('c.getAttachments'); action2.setParams({ "parentId": component.get("v.recordId") }); action2.setCallback(this, function(response) { var state = response.getState(); if (state == "SUCCESS") { var attachments = response.getReturnValue(); component.set("v.attachments", attachments); } }); $A.enqueueAction(action); $A.enqueueAction(action2); } })