Ich habe einen API-Aufruf, der funktioniert, aber ich würde es gerne auf mehreren Controllern verwenden, also habe ich es zu seinem eigenen Dienst verschoben. Ich stoße auf etwas, das wie ein klassisches Scope-Problem aussieht, oder auf ein Missverständnis des Digest-Zyklus von Angular.AngularJS, wie verwende ich einen Service, um HTTP-Daten zu erfassen und an meinen Controller zu binden?
'use strict';
myApp.factory('Stuff',['$http', function ($http) {
var Stuff = {};
Stuff.data = {};
Stuff.api = 'http://localhost:8080/api/';
Stuff.getStuff = function() {
var http_stuff_config = {
method: 'GET',
url: Stuff.api + 'stuff/'
};
$http(http_stuff_config).then(function successCallback(response) {
Stuff.data = (response.data);
console.log(Stuff.data); // Returns populated object.
},function errorCallback(response) {
console.log(response.statusText);
});
};
Stuff.getStuff();
console.log(Stuff.data); // Returns empty object.
return Stuff;
}]);
myApp.controller('appController', ['$scope','Stuff',function($scope,Stuff) {
$scope.stuff = Stuff;
console.log($scope.stuff.data); // Returns empty object.
$scope.stuff.getJobs();
console.log($scope.stuff.data); // Returns empty object.
}]);
Hier ist der große Hinweis. Die wesentliche Leistung von oben, in Ordnung ist ...
- leeres Objekt (in Dienst nach dem Aufruf-Methode)
- leeres Objekt (im Regler vor dem Aufruf-Methode)
- leeres Objekt (in der Steuerung nach dem Aufruf der Methode)
- besiedeltes Objekt (in Methodenausführung von Dienst)
- bevölkerten Objekt (in der Ausführung von Verfahren Controller)
So irgendwo zwischen dem Umfang der getStuff() -Methode und Angulars Reihenfolge der Operationen, mache ich etwas bemerkenswert dummes. Vielen Dank im Voraus.
hat meinen Sie $ http Daten zu erfassen? –