You need to sign in to do that
Don't have an account?
lightning aura component
Hi Everyone,can u plz tell me why i m getting this error..
(This page has an error. You might just need to refresh it. Action failed: c:ParentComponent$controller$handleComEvent [searchparam is not defined] Failing descriptor: {c:ParentComponent$controller$handleComEvent} )
there are 3 components...
#######components.....
(1)........AirflyComponent
<aura:component>
<div class="slds-p-around_x-small">
<lightning:card>
<div class="slds-p-around_medium">
<lightning:select name="select1" label="Adults" required="true" >
<option value="">choose one...</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</lightning:select>
<lightning:select name="select2" label="Class" required="true" >
<option value="">choose one...</option>
<option value="1">Economy</option>
<option value="2">Premium Economy </option>
<option value="3">Business</option>
</lightning:select>
<lightning:input type="date" name="input1" label="Enter a date" />
</div>
</lightning:card>
</div>
</aura:component>
(2)........parent Component
<aura:component
implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction"
access="global"
Controller="AirFlyController">
<aura:handler name="ChildEvent" event="c:AirportEvent" action="{!c.handleComEvent}"/>
<c:ChildComponent/>
</aura:component>
(3).........child Component
<aura:component >
<aura:registerEvent name="ChildEvent" type="c:AirportEvent"/>
<div class="slds-align_absolute-center" style="height:2rem">
<h1>Place</h1>
</div>
<lightning:card>
<div class="slds-m-around_x-small">
<p>FROM</p>
<lightning:input
name="enter-search"
label="From"
type="search"
variant="label-hidden"
onchange="{!c.dosearch}"
aura:id="SearchInput"
/>
</div>
</lightning:card>
</aura:component>
#######Controller.............
Parent Controller.......
({
handleComEvent : function(component, event, helper) {
var searchParam=event.getParam('searchText');
var action=component.get('c.searchAirport');
action.setParams({
searchparam:searchparam
});
action.setCallback(this, function(response){
var state=response.getState();
if(state==='SUCCESS'){
var responseValue=response.getReturnValue();
console.log('responseValue',responseValue);
}else{
console.log(response.getError());
}
});
$A.enqueueAction(action);
}
})
child Controller.......
({
dosearch : function(component, event, helper) {
var componentEvent=component.getEvent('ChildEvent');
var searchparam=component.find('SearchInput').get('v.value');
componentEvent.setParams({
searchText : searchparam
});
componentEvent.fire();
}
})
#######Event.............
<aura:event type="COMPONENT" description="Event template" >
<aura:attribute name="searchText" type="String"/>
</aura:event>
#######Apex.............
public class AirFlyController {
@AuraEnabled
public static List<sObject> searchAirport(String searchparam)
{
String Likeparam = '%' +searchparam+ '%';
String Query ='select Id,Name,City_Served__c from Airport__c Where Name Like :Likeparam';
List<sObject> sObjectList = Database.query(Query);
return sObjectList;
}
}
Hi Prashant,
Here you have used
componentEvent.setParams({
searchText : searchparam
});
@AuraEnabled
public static List<sObject> searchAirport(String searchparam)
this both should be same name,
change it by:
public class AirFlyController {
@AuraEnabled
public static List<sObject> searchAirport(String searchText )
{
String Likeparam = '%' +searchText + '%';
String Query ='select Id,Name,City_Served__c from Airport__c Where Name Like :Likeparam';
List<sObject> sObjectList = Database.query(Query);
return sObjectList;
}
}
And Please mark it as Best Answer if it helps.
Thanks