私はNode.jsから始めてpokeAPIを使ってpokedexを作成しようとしていますが、$ qと$ http要求を使用している問題があります。私がAPIコールを作成しようとすると、 "ReferenceError:getPokesが定義されていません"が返されます。原因を突き止めようとしている間に、変数にgetPokesを置くと、エラーが "ReferenceError:response is not defined"に行きます。たぶん私はそれを必要としないと私はロジックを誤解しています。いずれにしても、私は重要なロジックが欠けているのを知っています。すべての助けが大いに評価されます!
編集:私は以来、私はthis.willCollectThemAllからpokeNameを削除した場合、それはpokeNameが要求していると(http://pokeapi.co/api/v2/pokemon/ + pokeName未定義を示し、ここでの$ HTTP要求を持ち帰ることがわかってきました、それは渡さなっていないと意味があります。で、それは、私はそれが機能getPokesは、私は困惑どこでどの未定義であると言うthis.willCollectThemAllにpokeNameに入れた場合にどことは異なり、$ HTTP完成を見せて
サービス:。
// INITIALIZE SERVICE
// ============================================================
angular.module("app").service("pokeService", function($http, $q, $timeout) {
// ============================================================
this.willCollectThemAll = function(pokeName) {
var deferred = $q.defer();
var pokemon = false;
var morePokemon = false;
var pokemonCaught = false;
var allPokemonCaught = false;
getPokes = function(pokeName) {
$http({
url: 'http://pokeapi.co/api/v2/pokemon/' + pokeName,
method: 'GET'
}).then(function(response) {
console.log('service:', response);
pokemon = response.data;
pokemonCaught = True;
checkAllPokemon();
})
}
getMorePokes = function(pokeName) {
$http({
url: 'http://pokeapi.co/api/v2/pokemon-species/' + pokeName,
method: 'GET'
}).then(function(response) {
console.log('service:', response);
morePokemon = response.data;
allPokemonCaught = true;
checkAllPokemon();
})
}
function checkAllPokemon() {
if (pokemonCaught && allPokemonCaught) {
if (pokemon && morePokemon) {
deferred.resolve(true);
} else {
deferred.reject(true)
}
}
}
console.log('service', response)
getPokes();
getMorePokes();
return deferred.promise;
}
を} );
コントローラー:
// INITILIZE CONTROLLER
// ============================================================
angular.module("app").controller("pokeCtrl", function($scope, $q, pokeService) {
// VARIABLES
// ============================================================
// FUNCTIONS
// ============================================================
$scope.willCollectThemAll = function() {
pokeService.willCollectThemAll($scope.pokeName.toLowerCase())
.then(function(response) {
console.log(pokeService, response);
$scope.pokeData = response;
})
}
})。
は悲しげに、それは、このエラー にReferenceErrorに戻します:ChildScope $ scope.willCollectThemAll(pokeCtrl.jsで 。:応答がObject.willCollectThemAll(50 pokeService.js)で が定義されていません。 12) –