I have an ng-repeat loop which loops over 3 events. In each event, I want to check to see if the logged in user, is a player of the team the event is associated with.
The problem is, my code is getting inside is_player()
around 30 times each time the page is loaded. This obviously causes problems because it's trying to hit the GET method like 30 times in less than a second.
Why is this being called so many times and how can I fix this issue?
<div class="list-group" ng-repeat="event in events">
<div ng-show="is_player(event.team_id, profile.id)">
...
</div>
</div>
Controller method
/**
* Checks if a user is a player on the team. Need this method so that managers of a team can't rsvp if they're only a manager and not a player
* @param team_id - The team id of the event that we want to check if the user plays on
* @param user_id - The user that we want to check if they're a player of a team
*/
$scope.is_player = function(team_id, user_id) {
console.log('in is_player');
$http.get(baseUrl+'v1/teams/' + team_id + '/players' + apiKey)
.success(function(response) {
console.log("getting a team's players");
var players = response;
// Loop through all the players on the team
for(var i = 0; i < players.length; i++) {
//If the current player in the loop's user id matches what was passed in
if(players[i].user.id == user_id) {
return true;
}
}
$scope.error = null;
})
.error(function(response) {
$scope.success = null;
$scope.error = 'An error occurred looking for your events. Please try again later.';
});
return false;
}