2017-02-22 123 views
0

在角度上迭代遍歷數據集的最有效方式是計算每個城市有多少人?如何遍歷兩組數據並在angularjs中匹配值

app.factory('Person', function($resource) { 
    return $resource('/api/person/:id', {id: '@_id'}); 
}); 

app.controller('MainCtrl', ['$scope', 'Person', function($scope, Person) { 
    $scope.cities = ['Seattle', 'Phoenix', 'Las Vegas', 'Dallas', 'Chicago']; 

    $scope.getCount = function(city) { 
    Person.query({location: city}, function(data) { 
     return data.length; 
    }); 
    }; 
}]); 

的每個城市人顯示計數

<ul> 
    <li ng-repeat="city in cities">{{ city }}: {{ getCount(city) }}</li> 
</ul> 
+0

'$ scope.people'應該是數組 –

+0

是的抱歉,我使用$ resource query()方法,所以它返回一個數組。我只是不確定如何循環和計數。 –

+0

如果您只需要城市中的人數,則只能查詢人數而不是整個人數。因爲沒有進一步需要該數組,所以無論如何你都返回數組的數量所以數組不需要。嘗試從API獲取城市和人數,因爲通過API獲取每個城市的計數是不可行的。假設如果你有15個城市,那麼15個電話將被同時觸發,這將造成性能問題。 –

回答

1

嘗試這樣

<ul> 
    <li ng-repeat="city in cities">{{ city }}: {{ getCount(city) }}</li> 
</ul> 

在控制器

$scope.getCount = function(city){ 
     $scope.people = People.query();//you can pass city name here 
     return $scope.people.length; 
    } 
+0

我得到一個無限的摘要循環與此代碼,任何想法爲什麼? –

+0

究竟是什麼'People.query();'返回?對象數組或值的數組? –

+0

我用我現在的代碼更新了我的問題。以我的理解一組對象。 –

0

我是能夠得到解決的無限摘要錯誤的只是使用angular.forEach在我的控制器是這樣的:

angular.forEach($scope.cities, function(city) { 
    Student.query({city: city}, function(data) { 
     $scope.count[city] = data.length; 
    }); 
}); 

這仍然有打每個城市的API有一段時間,我不知道是否有更好的方法來做到這一點。

我打算就此問題提出一個單獨的問題。

相關問題