0

In the javascript controller of my lightning component, I need to call an apex method and pass it a map as parameter.

I have issues when setting the value in the map, in the javascript.

Now I have something like this in the javascript controller :

handleGetResult : function(component, event, helper) {
    var lines = component.get('v.listLines');
    console.log('lines : ');
    console.log(lines);

    //send a map as a parameter of the apex method
    var mapLines = {};
    for(var key in lines.keys()){
         mapLines[key] = lines.get(key);
    }

    console.log('mapLines : ');
    console.log(mapLines);

    //call apex method that construct the query
    var action = component.get('c.manageFilters');
    action.setParams({
        lines : mapLines
    });
    action.setCallback(this, function(response){
        var state = response.getState();
        if (state === "SUCCESS"){

        }
    });
    $A.enqueueAction(action);
}

But here mapLines is null even if I put many item in it via the lightning component. lines is not null and contains all the items.

I don't know how to create the map in javascript.

The apex method so far :

@AuraEnabled
public static String manageFilters(Map<String, Object> lines){
    System.debug('### lines : ' + lines);

    return null;
}
0

2 Answers 2

1

You may do it this way:

var lines = component.get('v.listLines');
console.log('lines : ', lines);

//send a map as a parameter of the apex method
var mapLines = {};
for(var i=0; i<lines.length;i++ ){
    mapLines[i] = lines[i];
}

console.log('mapLines : ', mapLines);

Below is the log output that I got from my test: enter image description here

1

Try this code ,

 var mapToSend = {}
  for (var key of lines.keys()) {
      mapToSend[key] = lines.get(key);
  }
  console.log('map tosend:::', mapToSend);
  action.setParams({
      lines: mapToSend
  });

Apex class:

 @AuraEnabled
 public static void manageFilters(Map<String, Object> lines ){
System.debug(JSON.serialize(lines )); }

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.