Я использую API, который возвращает данные JSON в этом формате:
{
paging: {
previous: null,
next: null
},
data: [
{ title: 'First Item' },
{ title: 'Second Item' },
...
]
}
Я использую Angular $resource для получения этих данных.
Мой код, который находится в контроллере, выглядит примерно так:
var Entity = $resource('/api/entities');
var entities = $scope.entities = Entity.get();
И затем, в представлении, я могу отобразить данные следующим образом:
<ul>
<li ng-repeat="entity in entities.data">{{entity.title}}</<li>
</ul>
Все работает отлично, но:
- Я предпочел бы только представление
entities.data
для представления вместо всего объектаentities
. Как перехватить данные, возвращаемые запросом GET, чтобы изменить его до, он заполняет$scope.entities
? - Коррелированный вопрос: поскольку я извлекаю массив данных, было бы проще использовать
Entity.query()
вместоEntity.get()
. Но если я используюEntity.query()
в приведенном выше коде, я получаю сообщение об ошибке "TypeError: Object # не имеет метода" push ". Это имеет смысл, так как API возвращает объект вместо массива (следовательно, на объект не существует метода push). Опять же, если бы я мог извлечь атрибут.data
из ответа, у меня был бы массив.
Следуя этим показаниям Dan Boyon, мне удалось настроить службу по умолчанию $resource
и переопределить методы .get() или .query(), но Я не уверен, куда идти оттуда.