2013-02-27 62 views
1

我正在采取我的第一步与AngularJS调用一个API,将返回一个JSON对象与我需要的数据。我调用API并接受响应并将其打印在HTML上,并根据需要迭代。使用AngularJS从API迭代JSON响应ngResponse

但是我还没有在实际的Javascript文件中找到一种方法,来迭代让我们说,分组和总结项目,或者将JSON的实际值打印到控制台。

app.js

angular.module('dashboard', ['ngResource']); 
    function DashboardCtrl($scope, $resource) { 
     $scope.dailyReports = $resource('http://myurl.com/app_dev.php/:action', 
      {action:'dailyreports', appid:'@appid', begindate:'@begindate', enddate:'@enddate'}); 


    $scope.loadData = function() { 
      $scope.dailyreportsResults = $scope.dailyReports.get({appid:$('#sel-apps').val(), begindate:$('#fecha-inicial').val(), enddate:$('#fecha-final').val()}); 
//it works!!!! 
     }; 

$scope.iterate = function() { 

      for (i=0; i < $scope.dailyreportsResults.data.length; i++){ 
        $scope.periodUnits += $scope.dailyreportsResults.data[i].units; 
        console.log($scope.periodUnits); 
        //It doesnt work :(

      } 
    }; 

的index.html

ng-repeat="data in dailyreportsResults.data" 
    {{data.countryName}} 
    {{data.units}} 

我在做什么错?

谢谢你们!

+0

只是当你调用'$ scope.iterate'? ng-repeat指令将在JSON加载完成后生效,但在接收数据之前调用迭代将导致错误,或者根本没有任何结果!尝试使用$资源回调 - '$ scope.dailyReports.get({YOURDATA},function(){callback -call iterate()})' – 2013-02-27 20:37:01

+0

我同意,我没有看到你从哪里调用迭代函数。你能为它创建一个JSFiddle吗? – 2013-02-27 20:47:22

回答

1

我不确定你的数据是什么样的,但也许你应该使用'for in'而不是增加一个数组。

$scope.iterate = function() { 
    for (x in $scope.dailyreportsResults.data){ 
    $scope.periodUnits += $scope.dailyreportsResults.data[x].units; 
    console.log($scope.periodUnits); 
    } 
}; 

另外,我认为你的ng-repeat应该附加到一个元素上。

<div ng-repeat="data in dailyreportsResults.data"> 
    {{data.countryName}} 
    {{data.units}} 
</div>