Ich habe eine Fabrik und einen Service. Die Fabrik ist getDriversData
und der Service ist collectDrivers
. Im Dienst muss ich einige Daten aus einer JSON-Datei abrufen, also habe ich $http.get
verwendet. Ich muss die Daten vom Service zur Fabrik senden, weil ich etwas Verarbeitung der Daten in der Fabrik mache. Die Codes sind wie folgt:AngularJS: Wie Daten zwischen Service und Fabrik übergeben werden?
.service('collectDrivers', function($http) {
// Get JSON
$http.get('js/bib.json').success(function(response) {
console.log('ENTERING HTTP GET IN collectDrivers');
console.log('RESPONSE DALAM collectDrivers', response);
// Put all response data into globalArray using loop
for(i = 0; i < response.length; i++) {
// If type is driver, put the uid in globalArray
if(response[i].type == 'driver') {
globalArray[i] = response[i].uid;
}
}
});
return globalArray;
})
.factory('processDriversData', function(collectDriversData) {
// I will be doing some processing in the collected data
// so I want to make sure it is already available in the
// globalArray
console.log('Content of globalArray: ', globalArray);
})
Das Problem ist, wird die globalArray
noch nicht gefüllt. Wenn ich jedoch versuche, das globalArray im Controller aufzurufen, sind die Daten vorhanden. Wie gebe ich die Daten vom Service an die Fabrik weiter? Ich bin neu zu eckig, also wenn ich falsch liege, zeige mir bitte den richtigen Weg.
erstellen 'getGlobalArray' Methode in Ihrem Dienst und * injiziert * den Service in Ihre Fabrik. Dann nenne es z.B. '$ scope.globalArray = collectDrivers.getGlobalArray();'. Weitere Informationen: https://docs.angularjs.org/guide/di – DonJuwe