@mletov

В каком формате передавать json в Angular?

Пожалуйста, подскажите:
Разбираюсь с Angular, ng-table.

Вот такой запрос
var Api = $resource("/data.txt", false);       
        this.tableParams = new NgTableParams({}, {
            getData: function (params) {
                return Api.get(params.url()).$promise.then(function (data) {
                    params.total(data.inlineCount); // recal. page nav controls
                    return data.results;
                });
            }
        });


Вот такой json
[{ "name": "christian", "age": 21 }, { "name": "anthony", "age": 88 }, { "name": "gfgfgfgf", "age": 8 }]


Ошибка
angular.js:12332 Error: [$resource:badcfg] Error in resource configuration for action `get`. Expected response to contain an object but got an array (Request: GET /data.txt)


Гуглил, ошибка известная, но все советы сводятся к поставить isArray в false. Не могу понять, почему Angular вообще думает, что я ему передаю массив, а не объект json.
  • Вопрос задан
  • 365 просмотров
Пригласить эксперта
Ответы на вопрос 2
@antonsr98
Системный Администратор
потому что [] это массив а в нем у вас json
Ответ написан
Комментировать
AMar4enko
@AMar4enko
Это не ошибка - это ngResource так спроектирован.
Вам проще использовать $http.get, если вам не надо с REST общаться. Вот выдержка из документации по стандартным методам:
A resource "class" object with methods for the default set of resource 
actions optionally extended with custom actions. 
The default set contains these actions:

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


По спецификации REST GET-запрос может использоваться для запроса данных сущности либо получения их списка. $resource.get предполагается использовать как раз для первого варианта, а $resource.query для второго.
Поэтому в первом случае ngResource ожидает получить JSON-объект, а во втором - массив объектов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы