2016-05-22 8 views
1

In meinem Beispiel, wenn ich eine GET-Anfrage senden, um ein Antwort-Array mit Daten zu erhalten, dann sehe ich in der Konsole von Firefox das Array leer ist. Ich weiß nicht, wo der Fehler ist. enter image description hereLeeres Array nach get-Anforderung (AngularJS)

Hier ist mein Code:

//Controller: 
$scope.changeDate = function (selFrom) { 
    vm.repos = CrudService.getRepoByDay(selFrom); 
} 


//Service (CrudService): 
function CrudService(ResService) { 
    var service = { 
     getRepoByDay: getRepoByDay 
    }; 

    return service; 

    function getRepoByDay(selTo) { 
     return ResourceService.test.query(
     { endDate: selTo }, 
     successResponse, 
     errorResponse 
    ); 
    } 

    function successResponse(response) { 
     return response; 
    } 
} 

//Service (ResService) 
test: $resource(baseUrl + '/api/repodates', { 
     endDate: '@EndDate' 
}, {}) 

//View 
<tbody> 
    <tr ng-repeat="report in rc.repos> 
    <td ng-repeat="(key, value) in report"> 
     {{ value }} 
    </td> 
    </tr> 
</tbody> 

jemand eine Idee Ich habe, was ich zu tun haben?

Antwort

2

$ Ressource asynchron Sie es in den Rückruf des Versprechens zu behandeln haben:

return ResourceService.test.query(
    { endDate: selTo } 
); 

CrudService.getRepoByDay(selFrom).$promise.then(function(data){ 
     vm.repos = data; 
     console.log(data);//log here not ouside the callback to check 
}); 

EDIT Probe mit $ q:

var deferred = $q.defer(); 
ResourceService.test.query(
    { endDate: selTo } 
).$promise.then(
    function(data){deferred.resolve(data);}, 
    function(rejection){deferred.reject(rejection);} 
); 
return deferred.promise; 
+0

das heißt, in den Dienst der CrudService I mustn‘ t definiere 'successResponse'? – yuro

+0

ja, da $ promise ein Versprechen ist, müssen Sie keinen Raw Callback definieren – Walfrat

+0

Haben Sie ein Beispiel mit '$ q',' .resolve' und '.reject'? – yuro

Verwandte Themen