You need to sign in to do that
Don't have an account?
ramayya dasam
Unable to find action 'createAccount' on the controller of c:Event11comp
Hi all ,
I had also faced the similar issue (Unable to find action 'createAccount' on the controller of c:Event11comp ). please go through the code below
Event :
<aura:event type="APPLICATION" description="Event template" >
<aura:attribute name="acc" type="Account"/>
</aura:event>
component 1 :
<aura:component >
<aura:registerEvent name="first" type="c:Event11"/>
<aura:attribute name="acc" type="Account" default="{'sobjectType':'Account'}" />
<div style="margin-left:100px;margin-top:100px;width:500px;border:1px solid green;">
<lightning:card title="" iconName="standard:account">
<aura:set attribute="title">
<h1>New customer</h1>
</aura:set>
<aura:set attribute="actions">
<lightning:button label="save" onclick="{!c.doSave}"/>
<lightning:button label="cancel" onclick="{!c.doCcancel}"/>
</aura:set>
<div style="padding:20px;">
<lightning:input label="Name" value="{!v.acc.Name}"/>
<lightning:input label="Phone" value="{!v.acc.Phone}"/>
<lightning:input label="Industry" value="{!v.acc.Industry}"/>
</div>
</lightning:card>
</div>
</aura:component>
component 1 controller :
({
doSave : function(component, event, helper) {
var accRecord = component.get("v.acc");
var action = component.get("c.createAccount");
action.setParams({"objA":accRecord});
action.setCallback(this,function(response){
var state = response.getState();
if(state == 'SUCCESS'){
var res = response.getReturnValue();
if(res !='Error'){
var evt = $A.get("e.c:Event11");
evt.setParams({"acc":accRecord});
evt.fire();
}
}
});
$A.enqueueAction(action);
},
doCancel : function(component, event, helper) {
component.set("v.acc",null);
}
})
component 2 :
<aura:component controller="controllerDml">
<aura:attribute name="accountdata" type="Account" default="{'sobjectType':'Account'}"/>
<aura:attribute name="flag" type="boolean" default="flase"/>
<aura:handler name="Submit" event="c:Event11" action="{!c.doSubmit}"/>
<aura:if isTrue="{!v.flag}">
<div style="margin-left:100px;margin-top:100px;width:500px;border:1px solid green;">
<lightning:card title="customer Details" iconName="standard:account">
<div style="padding:20px;">
<b>Name</b> : {!v.accountdata.Name}<br/>
<b>Phone</b> : {!v.accountdata.Phone}<br/>
<b>Industry</b> : {!v.accountdata.Industry}
</div>
</lightning:card>
</div>
</aura:if>
</aura:component>
component 2 controller:
({
doSubmit : function(component, event, helper) {
var acc1 = event.getParam("acc");
component.set("v.accountdata",acc1);
component.set("v.flag",true);
}
})
Application:
<aura:application extends="force:slds" >
<c:Event11comp />
<c:Event11comp1 />
</aura:application>
Apex class:
public class controllerDml {
@auraEnabled
public static string createAccount(Account objA) {
try{
Insert objA;
return objA.Id;
}
catch(Exception e) {
return 'Error';
}
}
}
I had also faced the similar issue (Unable to find action 'createAccount' on the controller of c:Event11comp ). please go through the code below
Event :
<aura:event type="APPLICATION" description="Event template" >
<aura:attribute name="acc" type="Account"/>
</aura:event>
component 1 :
<aura:component >
<aura:registerEvent name="first" type="c:Event11"/>
<aura:attribute name="acc" type="Account" default="{'sobjectType':'Account'}" />
<div style="margin-left:100px;margin-top:100px;width:500px;border:1px solid green;">
<lightning:card title="" iconName="standard:account">
<aura:set attribute="title">
<h1>New customer</h1>
</aura:set>
<aura:set attribute="actions">
<lightning:button label="save" onclick="{!c.doSave}"/>
<lightning:button label="cancel" onclick="{!c.doCcancel}"/>
</aura:set>
<div style="padding:20px;">
<lightning:input label="Name" value="{!v.acc.Name}"/>
<lightning:input label="Phone" value="{!v.acc.Phone}"/>
<lightning:input label="Industry" value="{!v.acc.Industry}"/>
</div>
</lightning:card>
</div>
</aura:component>
component 1 controller :
({
doSave : function(component, event, helper) {
var accRecord = component.get("v.acc");
var action = component.get("c.createAccount");
action.setParams({"objA":accRecord});
action.setCallback(this,function(response){
var state = response.getState();
if(state == 'SUCCESS'){
var res = response.getReturnValue();
if(res !='Error'){
var evt = $A.get("e.c:Event11");
evt.setParams({"acc":accRecord});
evt.fire();
}
}
});
$A.enqueueAction(action);
},
doCancel : function(component, event, helper) {
component.set("v.acc",null);
}
})
component 2 :
<aura:component controller="controllerDml">
<aura:attribute name="accountdata" type="Account" default="{'sobjectType':'Account'}"/>
<aura:attribute name="flag" type="boolean" default="flase"/>
<aura:handler name="Submit" event="c:Event11" action="{!c.doSubmit}"/>
<aura:if isTrue="{!v.flag}">
<div style="margin-left:100px;margin-top:100px;width:500px;border:1px solid green;">
<lightning:card title="customer Details" iconName="standard:account">
<div style="padding:20px;">
<b>Name</b> : {!v.accountdata.Name}<br/>
<b>Phone</b> : {!v.accountdata.Phone}<br/>
<b>Industry</b> : {!v.accountdata.Industry}
</div>
</lightning:card>
</div>
</aura:if>
</aura:component>
component 2 controller:
({
doSubmit : function(component, event, helper) {
var acc1 = event.getParam("acc");
component.set("v.accountdata",acc1);
component.set("v.flag",true);
}
})
Application:
<aura:application extends="force:slds" >
<c:Event11comp />
<c:Event11comp1 />
</aura:application>
Apex class:
public class controllerDml {
@auraEnabled
public static string createAccount(Account objA) {
try{
Insert objA;
return objA.Id;
}
catch(Exception e) {
return 'Error';
}
}
}
It's because you forgot to add Controller on your Component 1. Since you're using a method without implementing the controller, the component is unable to find any method called "createAccount".
So, Please make changes like That would be it.
_____
Regards,
Sachin
(:
All Answers
It's because you forgot to add Controller on your Component 1. Since you're using a method without implementing the controller, the component is unable to find any method called "createAccount".
So, Please make changes like That would be it.
_____
Regards,
Sachin
(:
Firstly thanks for the reply ,as u said i am adding this <aura:component controller="controllerDml"> . once click on" save" button it's not opening the component 2 page .please, check the output once again.
Regards,
Ramayya.
Is there any error or the event is not getting fired?
Please try placing some debug logs.
______
Regards,
Sachin
(:
This is the ouput attacthed above .
Regards,
Ramayya.
Please try placing a debug log for the callback state.
And please make some changes as,
to
In case, you still have any problem, please post them here.
_________
Regards,
Sachin
(:
As u said i am placing debug log also. Still I 'am getting the same issue.please check the code
Regards,
Ramayya.
As u said i am placing debug log at
var evt = $A.get("e.c:Event11");
alert("error check :"+ evt);
evt.setParams({"acc":accRecord});
evt.fire();
I am getting this msg above .please tell me what can i do
Regards,
Ramayya.
Please make the following changes & let me know if the problem still persists.
1. Please change, to in the register component.
2. On the component where the event has to be handled, And place debug logs to confirm the event is called & account record is passed.
If you still have any doubt feel free to ask.
_______
Regards,
Sachin
(:
As u said I am placing still I 'am getting the same issue.please check the code once,thank u
Regards ,
Ramayya.
What was the meaning of this error message . please explain
thank u,
Regards,
Ramayya.
This isn't an error. This is an object populated while the component gets metadata of the event.
Remove this alert & place debug logs in 2nd component to check whether the event is fired & data has been passed to the second component.
And if data is being passed. Please proceed further with the UI part.
_________
Regards,
Sachin
(: