You need to sign in to do that
Don't have an account?
jojoforce
retrieving data issue
I have the following code snippet, and for some reason, when the method returns no data, the lightning component aura framework is throwing an error. In desktop, there's no console error message. But in salesforce mobile, the attched error callback getTasks "undefined is not an object evaluating".The other thing to note, in desktop/web, it is not getting to console.log('loadData : c.getTasks AFTER');
Apex Controller
Apex Controller
@AuraEnabled public static list<Task> getTasks(String selectedFilter){ Id currentUserId = userinfo.getUserId(); set<Id> teamMemberIDs = new set<Id>(); list<Task> tasks = new list<Task> (); teamMemberIDs.add(currentUserId); for(User u : [SELECT Id,ManagerId FROM User WHERE ManagerId = :currentUserId]){ teamMemberIDs.add(u.Id); } String strQuery = ' SELECT Id, Who.Name, What.Name, AccountId,Account.Name,Subject,Status,Priority,OwnerId,Owner.Name '; strQuery += ' FROM Task '; strQuery += ' WHERE IsClosed = FALSE '; if(selectedFilter == 'TodayTasks'){ strQuery += ' AND ActivityDate = TODAY '; strQuery += ' AND OwnerId = \'' + currentUserId + '\''; } else if (selectedFilter == 'AllOverdueTasks') { strQuery += ' AND ActivityDate < TODAY '; strQuery += ' AND OwnerId = \'' + currentUserId + '\''; } else if (selectedFilter == 'TomorrowsTask') { strQuery += ' AND ActivityDate = TOMORROW '; strQuery += ' AND OwnerId = \'' + currentUserId + '\''; } else if (selectedFilter == 'MyTeamsTasks') { strQuery += ' AND ActivityDate = TODAY '; strQuery += ' AND OwnerId IN :teamMemberIDs '; } strQuery += ' ORDER BY Subject ASC, What.Name ASC '; //strQuery += ' LIMIT 6 '; System.debug('JOSEPH DEBUG: getTasks selectedFilter ' + selectedFilter); System.debug('JOSEPH DEBUG: getTasks strQuery : ' + strQuery); tasks = Database.query(strQuery); return tasks; }Aura Bundle Javascript Controller
({ callServer : function(component,method,callback,params) { var action = component.get(method); if (params) { action.setParams(params); } action.setCallback(this,function(response) { var state = response.getState(); if (state === "SUCCESS") { // pass returned value to callback function callback.call(this,response.getReturnValue()); } else if (state === "ERROR") { // generic error handler var errors = response.getError(); if (errors) { console.log("Errors", errors); if (errors[0] && errors[0].message) { throw new Error("Error" + errors[0].message); } } else { throw new Error("Unknown Error"); } } }); $A.enqueueAction(action); }, loadData : function(component) { console.log('loadData : ' + component.get("v.selectedFilter")); //Get Task Records this.callServer(component,"c.getTasks",function(response){ console.log('loadData : c.getTasks BEFORE'); component.set("v.tasksCount", response.length); console.log('loadData : v.tasksCount response.length ' + response.length); if(response.length > 0){ component.set("v.isThereTasks",true); component.set("v.tasks", response); } else { component.set("v.isThereTasks",false); } console.log('loadData : c.getTasks AFTER'); },{ selectedFilter: component.get("v.selectedFilter") }); } });Aura Bundle Component
<aura:attribute name="tasks" type="Task[]"/>
After removing the tag in the lightning:input, it is now working!