2017-02-22 10 views
0

角度のようなデータセットを反復処理して各都市の人数を計算する最も効率的な方法は何でしょうか?2つのデータセットと角度の一致値を反復する方法

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

'$ scope.people'は配列 –

+0

にする必要があります。申し訳ありませんが、$ resource query()メソッドを使用していますので、配列を返しています。私はどのようにループしてカウントを取得するのか分かりません。 –

+0

都市内の人数が必要な場合は、人数全体ではなく人数を照会するだけで済みます。その配列はさらに必要ないので、配列のcountを返すことになります。配列は必要ありません。 APIを使用して各都市のカウントを取得することは現実的ではないため、APIから都市を取得して人数をカウントしてください。あなたが15の都市を持っているとしたら、15回のコールが同時に発砲され、それがパフォーマンス上の問題を引き起こすでしょう。 –

答えて

1

はコントローラでは、この

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

のようにしてみ都市ごとの人々の

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

表示回数

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

これはまだ都市ごとに1回APIをヒットする必要がありますが、これを行うより良い方法があるかどうかはわかりません。

この問題で別の質問をするつもりです。

関連する問題