Пустой массив после запроса get (AngularJS)
В моем примере, когда я отправляю запрос GET, чтобы получить массив ответов с данными, я вижу, что в консоли Firefox массив пуст. Я не знаю, где ошибка.
Вот мой код:
//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>
У кого-нибудь есть идея, что мне делать?
1 ответ
Решение
$resource является асинхронным, вы должны обработать его в обратном вызове обещания:
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
});
РЕДАКТИРОВАТЬ образец с $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;