2015-09-09 1 views
0

Так что я использую API. Я создал службу, которая обращается к этому API, скажем, у нас есть Team Controller, который обращается к информации о команде, такой как имя команды, создание даты и ее игроков. У нас также есть Player Controller, который дает информацию об игроке через API, который мы используем. Когда я открываю информационную таблицу игрока, у меня есть идентификатор его команды. Как получить доступ к имени своей команды с помощью идентификатора команды? Я попытался запустить функцию в двойных фигурных скобках, например, getTeamName и предоставить идентификатор команды. Браузер перезагрузил страницу неограниченное количество раз, и мне было отправлено много пакетов, которые снова и снова загружали мою страницу. Вот пример кода:AngularJS, доступ JSON от другого контроллера/метода обслуживания

controllers.js

myAppControllers.controller('teamController', function($scope, $routeParams, myAPIservice) { 
 
    $scope.id = $routeParams.id; // Team Id 
 

 
    myAPIservice.getTeam($scope.id).success(function (response) { 
 
     $scope.team = response; 
 
    }); 
 

 
    myAPIservice.getTeamPlayers($scope.id).success(function (response) { 
 
     $scope.players = response; 
 
    }); 
 
}); 
 

 
myAppControllers.controller('playerController', function($scope, $routeParams, mundialAPIservice) { 
 
    $scope.id = $routeParams.id; // Player Id 
 

 
    myAPIservice.getPlayer($scope.id).success(function (response) { 
 
     $scope.player = response; 
 
    }); 
 
});

services.js

myAppServices.factory('myAPIservice', function($http) { 
 

 
    var myAPIservice = {}; 
 

 
    myAPIservice.getTeam = function(team_id) { 
 
     return $http({ 
 
     method: 'GET', 
 
     url: 'http://whatever.com/api/team/' + team_id + '?apikey=fff' 
 
     }); 
 
    } 
 
    
 
    myAPIservice.getTeamPlayers = function(team_id) { 
 
     return $http({ 
 
     method: 'GET', 
 
     url: 'http://whatever.com/api/players?apikey=fff&teamId=' + team_id 
 
     }); 
 
    } 
 

 
    myAPIservice.getPlayer = function(player_id) { 
 
     return $http({ 
 
     method: 'GET', 
 
     url: 'http://whatever.com/api/players/' + player_id + '?apikey=fff' 
 
     }); 
 
    }

Извините за любую ошибку, если я с hould предоставить больше информации о моем коде, скажите это, я написал это сообщение на спешке.

ответ

0
myAppControllers.controller('playerController', function($scope, $routeParams, mundialAPIservice) { 
    $scope.id = $routeParams.id; // Player Id 

    myAPIservice.getPlayer($scope.id).success(function (response) { 
     $scope.player = response; 
    }); 
    //I assume player resoponse contains team id in teamId property .. passing it to getTeam method to get team name 
    myAPIservice.getTeam ($scope.player.teamId).success(function (response) { 
     // i am only getting team name but you can other info in response too 
     $scope.player.Teamname = response.Teamname; 
    }); 

}); 

Это должно работать imo. Поскольку у вашего сервиса есть getTeam, а услуга уже введена. Вы можете получить доступ к любому методу обслуживания любого контроллера при условии, что услуга будет введена.

Смежные вопросы