AngularJS从JSON数组访问对象

时间:2014-06-19 13:56:42

标签: arrays json angularjs object

是的,我正在使用$ 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%2CcountryName%2CcountryISO%2CcountryISO3', {}, {
  query: {method:'GET', isArray:false}
})

在我的控制器中,我使用以下方式访问资源:

  $scope.places = Countries.query();

然后我可以在我的视图中放入一个很好的列表并做一些事情,例如:

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

那里没有问题!

但是,当我尝试使用控制器中返回的数据执行过滤器等时,我遇到了问题。我需要从记录数组中获取JSON对象,但我不确定如何在视图外部执行此操作!

任何指针都会非常感激。

由于

1 个答案:

答案 0 :(得分:0)

按照惯例,我提交一个问题,我认为我想出了一个解决方案......

我将$资源更新为:

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

    })

希望这也可以帮助其他人!