AngularJS получает доступ к объектам из массива JSON

#arrays #json #angularjs #object

#массивы #json #angularjs #объект

Вопрос:

Правильно, я использую $resource и query для доступа к интерфейсу RESTful, который выдает ответ в следующем формате:

 record (array[RecordResponse], optional)
  

например:

 {
  "record": [
    {
      "countryID": 732,
      "countryName": "Western Sahara",
      "countryISO": "EH",
      "countryISO3": "ESH"
    },
    {
      "countryID": 4,
      "countryName": "Afghanistan",
      "countryISO": "AF",
      "countryISO3": "AFG"
    },
    {
      "countryID": 8,
      "countryName": "Albania",
      "countryISO": "AL",
      "countryISO3": "ALB"
    }
  ]
}
  

мой текущий запрос $resource выглядит следующим образом:

 return $resource('http://mydatasource/countries?fields=countryID,countryName,countryISO,countryISO3', {}, {
  query: {method:'GET', isArray:false}
})
  

В моем контроллере я получаю доступ к ресурсу с помощью:

   $scope.places = Countries.query();
  

Затем я могу поместить их в хороший список, на мой взгляд, и делать что-то, например:

 <tr ng-repeat="country in places.record">
  <td>{{country.countryName}}</td>
</tr>
  

Отлично, никаких проблем нет!

Однако я сталкиваюсь с проблемами, когда пытаюсь выполнить фильтры и т. Д. С возвращаемыми данными в контроллере. Мне нужно извлечь объекты JSON из массива записей, но я не уверен, как это сделать вне представления!

Любые указатели будут высоко оценены.

Спасибо

Ответ №1:

Как обычно, как только я отправляю вопрос, я думаю, что нашел решение…..

Я обновил $resource до:

 return $resource('http://mydatasource/countries?fields=countryID,countryName,countryISO,countryISO3', {}, {
      query: {
        method:'GET',
        isArray:true,
        transformResponse: function(data, header) {
            var wrappedobj = angular.fromJson(data);
            return wrappedobj.record;
            }
        }

    })
  

Надеюсь, это может помочь кому-то еще там тоже!

Комментарии:

1. Есть ли у вас какие-либо идеи, как отображать данные с помощью ng-repeat, если я извлекаю данные со страницы DRF с помощью массива JSON? Вот мой вопрос: ссылка

2. Можете ли вы опубликовать plunkr или jsfiddle своего кода, и я постараюсь помочь!