Ich habe einen Dienst, den ich über $http
Daten erhalten möchte (der Grund für einen Dienst ist, weil ich diesen Aufruf mehrmals in meiner App machen muss)
der Service war super funktioniert, das ist der Code:
factory('websiteService', function($rootScope, $http) {
this.getWebsites = function(){
http({
method: 'GET',
url: './data/websites.json'
}).then(function successCallback(response) {
return response.data;
});
}
$rootScope.websiteService = this;
return this;
});
Dann verwende ich es in mehreren Steuerungen wie so:
.controller('MyCtrl', function($scope, websiteService) {
$scope.websites = websiteService.getWebsites(); // not working
});
Obwohl, wie man dies tut, denke nicht Arbeit. Es scheint, dass websites
definiert ist, bevor die $http
Anfrage endet, aber ich könnte falsch liegen.
Wie kann ich das umgehen?
Lesen Sie die Dokumentation zum Erstellen von Diensten mit einer Factory: Sie sollten 'this' nicht verwenden und den root-Bereich nicht ändern. Dann lesen Sie http://blog.ninja-squad.com/2015/05/28/angularjs-promises/, um die Falle über die Versprechungen zu verstehen, in die Sie geraten sind und wie Sie sie beheben können. –
Danke, schau dir das an! – user3800799