I've been dabbling around Lightning Components (Aura). I decided to use Aura so I can display may Lightning Web Component (LWC) in a pop-up window (or modal) through the click of a Custom Quick Action. However, I keep getting an error.
Basically, all I'm trying to accomplish with Aura is to:
- Fetch the Stage__c field by calling an Apex method.
- Check if that Stage__c's field value is equal or not equal to "Closed".
- Display a toast message and close the component if Stage__c == "Closed", in succession.
I've written a simple code to do this but I can't seem to move forward and call the Apex correctly as I'm always receiving this error:
So, I checked my Apex method to make sure it has @AuraEnabled annotation, but to no avail.
Here's what I have:
CMP
<aura:component implements="force:lightningQuickActionWithoutHeader,force:hasRecordId" >
<aura:attribute name="recordId" type="Id" />
<aura:handler name="init" value="{!this}" action="{!c.doInit}" />
<c:editProduct recordId="{!v.recordId}" onclose="{!c.closeQA}"/>
</aura:component>
Controller JS
({ doInit : function(component, event, helper){
helper.getOppty(component);
}
})
Helper JS
({
getOppty : function(component, event, helper) {
var action = component.get("c.getOpptyCurrency");
action.setParams({
opptyId: component.get("v.recordId")
});
action.setCallback(this, function(a){
var state = a.getState();
var returnVal = a.getReturnValue();
console.log('Return Value :', returnVal);
if(state == "SUCCESS"){
for(i=0; i < returnVal.length; i++){
var stage = returnVal[i];
stage.Stage__c;
}
}else{
console.log("Failed with state: " + state);
}
});
$A.enqueueAction(action);
console.log('Stage :', stage.Stage__c);
if(stage.Stage__c === "Closed"){
this.closeQA(component, event, helper);
this.showError(component, event, helper);
}
},
showError : function(component, event, helper) {
var toastEvent = $A.get("e.force:showToast");
toastEvent.setParams({
title : 'Error',
message:'This is an error message',
duration:' 5000',
key: 'info_alt',
type: 'error',
mode: 'dismissible'
});
toastEvent.fire();
},
closeQA : function(component, event, helper) {
$A.get("e.force:closeQuickAction").fire();
}
})
Apex
@AuraEnabled
public static Opportunity__c getOpptyCurrency(string opptyId){
Opportunity__c oppty = [SELECT Id, Stage__c
FROM Opportunity__c
WHERE Id =: opptyId LIMIT 1];
return oppty;
}
Can anyone help point me in the right direction? What am I doing wrong exactly in this case
Best Answer
You need to define the controller for the Aura Component.