Целый день возился с API и решил использовать Restanglar. Действительно возникают проблемы с получением данных и в $scope.
Я понимаю, что это будет не просто JSON, который возвращается из API, и у него есть куча других внутренних методов и т. д. Но когда я получаю данные, я вижу, что они похоронены где-то в отладке с помощью console.log, но я не могу получить его в $scope, чтобы использовать его, на мой взгляд, который раньше работал нормально.
Как вывести эти данные в $scope и, следовательно, в представление?
Модель
angular.module('horse', ['restangular'])
.config(function(RestangularProvider) {
RestangularProvider.setBaseUrl('http://url/api');
RestangularProvider.setResponseInterceptor(
function(data, operation, what) {
if (operation == 'getList') {
return data[what];
}
return data;
});
});
Контроллер
angular
.module('horse')
.controller("IndexController", function ($scope, Restangular) {
$scope.horse = null;
$scope.showSpinner = true;
Restangular.all('horse').getList().then(function(horse) {
$scope.horse = horse;
console.log($scope.horse);
});
});
ответ API
{"error":false,"horse":[{"id":"1","name":"horse 2"},{"id":"2","name":"horse 2"}]}
Изменить 1
Прямоугольный ответ
[Object, Object, route: "horse", getRestangularUrl: function, getRequestedUrl: function, addRestangularMethod: function, clone: function…]
Изменить 2
Я также пробовал это - https://github.com/mgonto/restangular#using-values-directly-in-templates
$scope.horse = Restangular.all('horse').getList().$object;
Что просто приводит к выводу пустого массива. Я также попытался удалить setResponseInterceptor
и изменить структуру API, чтобы получить массив данных напрямую без метаматериала (ошибки и т. д.), без радости :(