Понимание свойства isarray ресурса angularJS $

Я изучаю службу ресурсов angular и в угловое учебник добавляется пользовательское действие (запрос), которое имеет свой метод установить на " get " и параметры isarray имеет значение true

return $resource('phones/:phoneId.json', {}, {
      query: {method:'GET', params:{phoneId:'phones'}, isArray:true}
 });

однако, если вы посмотрите на документы для $resource действие "запрос" уже имеет свой метод установить на " get " и параметры isarray уже установлено значение true по по умолчанию. И я подумал, что могу просто уйти. те свойства.

на метод свойство, но оказывается, что если я оставлю параметры isarray свойства я получаю эту ошибку:

ошибка: [$resource:badcfg] ошибка в конфигурации ресурса для действия query. Ожидаемый ответ должен содержать объект, но получил массив

почему это?

1 ответов


Я думаю, вы неправильно поняли документацию.

по умолчанию без добавления каких-либо пользовательских действий, поддерживаются следующие:

'get':    {method:'GET'},
'save':   {method:'POST'},
'query':  {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'} 

поэтому по умолчанию query action ожидает, что массив будет возвращен, что имеет смысл, поскольку запрос обычно возвращает массив элементов.

Итак, если вы используете:

phonecatServices.factory('Phone', ['$resource', function($resource){
    return $resource('phones/phones.json');
}]);

затем вы можете выполнить запрос вот так:

var queryParams = { name: 'test' };

Phone.query(queryParams, {}, function (response) {
    $scope.phones = response;
});

теперь, если вы хотите добавить пользовательское действие тогда значение по умолчанию для isArray is false так:

return $resource('phones/:phoneId.json', {}, {
      someCustomAction: {method:'GET', params:{phoneId:'phones'} }
});

необходимо будет вернуть объект. Если массив был возвращен, то isArray необходимо установить в true вот так:

return $resource('phones/:phoneId.json', {}, {
      someCustomAction: {method:'GET', params:{phoneId:'phones'}, isArray: true }
});