0

I'm working on a lightning:select tag to display account names in the dropdown list, whenever I select an account from the list it shows all the opportunities but I want only account related opportunities for that I'm passing ID parameter to the apex controller but it's not showing anything.

Component

<aura:component controller="BookFaircls"> 
    <aura:attribute name="account" type="Account[]" />
    <aura:attribute name="opportunity" type="Opportunity[]" />
    <aura:attribute name="Id" type="ID"/>
    <aura:handler name="init" value="{!this}" action="{!c.doInit}" /> <lightning:select name="selectItem" aura:id="selectItem" label="" onchange="{!c.oppRecords}">
    <aura:iteration items="{!v.account}" var="acc">
    <option value="{!acc.Id}">{!acc.Name}</option>
    </aura:iteration</ligh‌​tning:select>
    <aura:iteration items="{!v.opportunity}" var="opp"> {!opp.Name} </aura:iteration>
</aura:component>

Controller

 ({ 
        doInit : function(component, event, helper) { 
        var action = component.get("c.getAccountNames");
         action.setCallback(this, function(response){
         component.set("v.account", response.getReturnValue());
         }) 
        $A.enqueueAction(action);
         }, 

        oppRecords : function(component, helper){ 
        var value = component.get("c.getOpportunityDetails");
        value.setParams({Id :component.get("v.Id")}); value.setCallback(this,function(res){ 

        component.set("v.opportunity", res.getReturnValue()); })
        $A.enqueueAction(value);
        }
 }) 
5
  • 1
    what you have tried , Shared the code. Commented Nov 22, 2017 at 10:30
  • 1
    @anu Next time updated the code in question itself . Commented Nov 22, 2017 at 12:26
  • 1
    Hi @anu, you can click the edit link the to bottom left of your post and add the code to your question directly, no need to post a new question. Commented Nov 22, 2017 at 12:36
  • As I see your doInit function there is no action.setParams method to set parameter. Commented Nov 22, 2017 at 13:03
  • I want setParams method in oppRecords method not in doInit and I need to pass setParams value to the Apex method. Commented Nov 22, 2017 at 13:09

1 Answer 1

2

As you missed the attribute value="", you can't get the selected value. So you should mention the attribute value="{!v.Id}"in lightning:select component.

<lightning:select name="selectItem" aura:id="selectItem" label="" value="{!v.Id}" onchange="{!c.oppRecords}">
    <aura:iteration items="{!v.account}" var="acc">
    <option value="{!acc.Id}">{!acc.Name}</option>
    </aura:iteration>
</lightning:select>
6
  • Thanks for your response, I tried your code but still no opportunities getting. Commented Nov 27, 2017 at 8:57
  • @anu did you check in the controller component.get("v.Id") whether you getting the selected AccountId. Can you check your code again because I think it's working fine. Commented Nov 27, 2017 at 9:41
  • In component controller I'm setting the "Id" value here: var action = component.get("c.getOpportunityDetails"); action.setParams({ Id : component.get("v.Id") }); Commented Nov 27, 2017 at 13:36
  • @anu - make sure you get the value in console.log(component.get("v.Id")); , if yes, check your apex controller. Commented Nov 27, 2017 at 13:58
  • Thanks, I'm getting AccountId in the console but that accountId is not passing a parameter to apex controller method: here is my code is there any mistake I did? please help me @AuraEnabled public static List<Opportunity> getOpportunityDetails(String id){ List<Opportunity> opps = [select name from Opportunity where AccountId =:id]; return opps; } Commented Nov 27, 2017 at 14:38

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.