Ich habe einen Service hier erklärt:
(function() {
'use strict';
angular
.module('ngInterview.api.students')
.service('StudentsService', StudentsService);
StudentsService.$inject = ['$http'];
function StudentsService($http) {
/**
* Exposed functions
*/
this.getName = getName; // This function serves no purpose. It's just here as an example.
this.getStudents = function() {
console.log("getting to the getStudents function");
return $http.get("http://il-resume-api.azurewebsites.net/api/students").then(function(res) {
console.log("getting data back");
console.log(res.data);
return res.data;
}, function(res) {
console.log("getting bad data");
console.log(res);
return res.data;
});
}
/**
* Implementations
*/
function getName() {
return 'studentsService';
}
}
})();
Aus irgendeinem Grund nur der Code, die „die getStudents Funktion bekommen“ bekommt und reagiert nicht danach. Ich habe versucht, ein leeres Projekt mit $ http in einem Controller einzurichten und es funktioniert, es ruft die Daten vom Endpunkt ab, aber aus irgendeinem Grund wird dieser Dienst als Teil eines Moduls nicht. Und wenn ich console.log $ http, bekomme ich ein gültiges Objekt, also glaube ich nicht, dass es das ist.
Unmittelbar nach 'console.log („immer auf die getStudents Funktion“);' Sie kommen von der Funktion zurück. Die zusätzlichen Ausdrucke zur Konsole werden erst nach Abschluss der HTTP-Anfrage ausgeführt. Versuchen Sie, das http.get innerhalb des Körpers aufzurufen, wenn die Funktion und die Funktion selbst zurückgibt. – FDavidov
Behandeln Sie "getStudents" als Versprechen? Indem Sie das '$ http' zurückgeben, müssen Sie' then' mit Ihrer 'getStudents' Funktion verwenden, um ein Ergebnis zu erwarten. – AranS