【问题标题】:AngularJS access objects from JSON arrayAngularJS 从 JSON 数组访问对象
【发布时间】:2014-06-19 13:56:42
【问题描述】:

对,我正在使用 $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 对象,但我不确定如何在视图之外执行此操作!

任何指针将不胜感激。

谢谢

【问题讨论】:

    标签: arrays json angularjs object


    【解决方案1】:

    像往常一样,我一提交问题就想出了一个解决方案.....

    我将 $resource 更新为:

    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;
                }
            }
    
        })
    

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

    【讨论】:

    • 如果我从带有 JSON 数组的 DRF 页面中提取数据,您知道如何使用 ng-repeat 显示数据吗?这是我的问题:link
    • 你能发布你的代码的 plunkr 或 jsfiddle,我会尝试帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    相关资源
    最近更新 更多