Ich bin newby in angularjs Ich recherchierte im Internet, aber ich konnte keine geeignete Lösung für mein Problem finden. Ich habe einen http-Aufruf gemacht, um einige Daten vom Controller zu bekommen. Die Controller-Seite ist in Ordnung. Aber das clientseitige Versprechen wartet nicht auf Daten. Hier Codes, die ich geschrieben habe;MVC und Angularjs: Versprechen wartet nicht Daten
//service code
angular.module("myApp").service('$myService', function ($http, $q) {
this.getDataArray = function() {
var deferred = $q.defer();
$http.get('../Home/GetDataArray')
.success(function success(response) {
deferred.resolve(response);
})
.error(function() {
console.log("error getting data array");
deferred.reject();
});
return deferred.promise;
};
}
// controller-code
angular.module("myApp").controller('dataController', function ($scope, $http, $myService) {
$scope.getDataFromService = function() {
$myService.getDataArray().then(function (response) {
$scope.dataArray = response.data;
});
};
});
}
Wenn ich die getDataFromService Methode auf den ersten $ scope.dataArray nennen, ist leer, aber der zweite Anruf wird $ scope.dataArray mit Daten gefüllt. Wo ist das Problem? Danke für Hilfe.
können Sie das Ergebnis des ersten HTTP-Aufrufs in fiddler/chrome dev tools überprüfen? – fikkatra
Ich habe es auch überprüft, aber wenn ich den ersten Aufruf machte, ist $ scope.dataArray leer, weil Versprechen nicht warten, wie ich sagte –
Ich meine nicht $ scope.data, ich meine den HTTP-Aufruf selbst. Sind Sie absolut sicher, dass die Antwort des ersten Anrufs (wie in den Chrome-Tools angezeigt) Daten enthält? – fikkatra