所以我进入Angular并且我已经成功完成了api调用,该调用返回带有名称和url的对象。要获取对象的详细信息,我需要执行另一个api调用,其中包含对象的id。我不知道该怎么做。
这是我的服务,用于调用对象的详细信息。 ':id'是对象的id必须在api链接中的位置
app.factory('pokemonDetails', ['$http', function($http) {
return $http.get('http://pokeapi.co/api/v2/pokemon/:id')
.success(function(data) {
return data;
})
.error(function(err) {
return err;
});
}]);
我不确定我是否清楚地解释了这一点。
当我转到我的网址'/ pokemon / 1'时,api必须拨打'http://pokeapi.co/api/v2/pokemon/1'。
如果我转到我的网址'/ pokemon / 2',则api必须拨打“http://pokeapi.co/api/v2/pokemon/2”等等。
(我不确定是否需要分享我的代码的其他部分,如果我告诉我,我会添加它们。)
答案 0 :(得分:1)
如果你想使用它,这是angular's $resource
service的一个很好的用例。
var Pokemon = $resource('http://pokeapi.co/api/v2/pokemon/:id', {id:'@id'});
var thisPokemon = Pokemon.get({id:1}, function() {
/* whatever you want to do after you get the details back */
});
$resource
是一种简写,允许您对API资源进行标准(和自定义)CRUD操作调用。
答案 1 :(得分:0)
定义具有参数的函数。
O(n*log(n)
然后在您的客户端代码中使用它。
O(n^2)
关键是将参数传递给函数。
弃用通知
已弃用
app.factory('pokemonDetails', ['$http', function($http) { function httpPromise(id) { return $http.get('http://pokeapi.co/api/v2/pokemon/'+id); } //return function return httpPromise }]);
遗留承诺方法$scope.details=[]; for (var id=0; id < someNumber; id++) { pokemanDetails(id).then( function onFulfilled(response) { $scope.details[id] = response.data; }).catch ( function onRejected (response) { console.log ( response.status ); }); };
和$http
。请改用标准.success
方法。 1