Я только начинаю с Node.js, и я пытаюсь сделать pokedex с pokeAPI, у меня проблема с использованием запросов $ q и $ http. Когда я пытаюсь сделать вызов api, он возвращает «ReferenceError: getPokes не определен». При попытке выяснить, что вызывает это, я обнаружил, что putPokes на переменной вызывает ошибку, чтобы перейти к «ReferenceError: response not defined». Может быть, мне это не нужно, и я не понимаю логику. В любом случае, я знаю, что мне не хватает какой-то важной логики, может быть, что-то в моем контроллере? Любая помощь очень ценится!
EDIT: Я так обнаружил, что если я удалить pokeName из this.willCollectThemAll он возвращает запросы $ HTTP с, где pokeName в запросе и показывает неопределенными (http://pokeapi.co/api/v2/pokemon/ + pokeName Который имеет смысл, поскольку это не получение прошло. в, но он показывает на $ HTTP завершения, в отличие от которой, если я ставлю в pokeName в this.willCollectThemAll, где он говорит, что функция getPokes неопределен, который где я тупик
SERVICE:.
// 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: ответ не определен на Object.willCollectThemAll (pokeService.js: 50) в ChildScope $ scope.willCollectThemAll (pokeCtrl.js.: 12) –