I am currently working on an AngularJS project in which I have to get project information, for a specific month and year, from the server and show them to the user.
First of all I'm getting a list of Project Id's (projectList), which can be variable, and then I need to get the info on those projects for a specific year and month. With this code I'm trying to get the data and to refresh the data when the last projects is successful. After the data is fetched, I use a ng-repeat to show it to the user.
$scope.getData = function(){
        $scope.projectInfoList = [];
        for(var index=0; index < $scope.projectList.length; index++){
            projectService.getProject($scope.model.year, $scope.model.month, parseInt($scope.projectList[index]) ).success(function(data){
                var listInput = { projectID : $scope.projectList[index], data :  data};
                $scope.projectInfoList.push(listInput); 
                if(index == $scope.projectList.length - 1){
                    $scope.$apply();
                }
            });
        };
    }
This has 2 mistakes.
- It adds only data to the last index.
- It doesn't refresh the data immediately when I request data for another month or year
I have looked for solutions with $q.all but I'm not sure how I would use it together with variable amount of functions of 'projectService.getProject(..)'
 
     
    