Как изменить данные, возвращаемые $resource в Angular.js?

Я использую 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();

И затем в представлении я могу отобразить данные вот так:

  • {{entity.title}}

Все работает нормально, но:

  • Я бы предпочел показать только содержимое entities.data, а не весь объект entities. Как я могу перехватить данные, возвращаемые запросом GET, чтобы изменить их до того, как они будут заполнены $scope.entities?
  • Коррелированный вопрос :, поскольку я извлекаю массив данных, было бы чище использовать Entity.query()вместо Entity.get(). Но если я использую Entity.query()в приведенном выше коде, я получаю сообщение об ошибке «TypeError :Object #не имеет метода «push»». Это имеет смысл, так как API возвращает объект вместо массива (, следовательно, нет метода «проталкивания» для объекта ). Опять же, если бы я мог извлечь атрибут .dataиз ответа, у меня был бы массив.

Следуя этим указаниям Дэна Бойона, мне удалось настроить службу по умолчанию $resourceи переопределить методы.get ()или.query (), но я не уверен, с чего начать. там.

18
задан Community 23 May 2017 в 12:00
поделиться