angularjs und $http-request
Hallo, ich bin neu in AngularJs und zu versuchen, um json-Daten von meinem server. Wenn der Dienst ausgeführt wird, sehe ich eine klare Antwort in Fiddler. Aber der Erfolg oder die Fehler-Funktion nicht ausgeführt, und so der Dienst-ein leeres array zurück.
var app = angular.module('imageApp', []);
app.service('imageService', function ($http) {
var imageModels = [];
this.Images = function (url) {
$http({ method: 'GET', url: url }).success(function (data) {
imageModels = data;
}).error(function (data) {
imageModels = data || "Request failed";
});
return imageModels;
};
};
});
app.controller('ImageController', function (imageService, $scope) {
$scope.fetch = function (url) {
$scope.url = url;
$scope.ImageModels = imageService.Images($scope.url);
};
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
$http Ergebnisse asynchron. Also
return imageModels
ausgeführt wird, bevor der Erfolg() oder Fehler () - callbacks eine chance habe, zu laufen. Sie müssen warten, für das Versprechen, dass der $http-schafft zu lösen-verwenden Sie dann() im controller.Anstatt hier wiederholen, siehe die Lösung von @Pete BD: https://stackoverflow.com/a/12513509/215945
Aktualisieren Sie Ihren Dienst wie dieser.
Dann Ihren controller, Sie können nun warten, bis ein Versprechen zurückgegeben werden, aus dem Dienst.
Also, was ist passiert? Auf Ihren Dienst, beachten Sie, dass wir Hinzugefügt
$q
zu schaffen, ein Versprechen, so können wirreslove
undreject
die Antwort von$http
und machen es "thenable" auf dem controller.Schreiben einen Dienst handle, $http-Anfrage ist immer eine Quälerei für mich, so habe ich diese Winkel-Modul, um Dinge zu handhaben für mich. Wenn Sie möchten, können Sie check it out.