2016-06-04 2 views
1

난 lodash에 countBy 기능 데이터의 세트에서의 각 항목의 발생 회수를 카운트 한 경우, 그 결과이있다 : 이제 IAngularJS와 - 해 orderBy 값 키로 ng를 반복, 값 쌍

$scope.colors= { 
"Orange": 3, 
"Blue": 2, 
"Pink": 1, 
"Red": 1, 
"Black": 2, 
}; 

데이터를 표시하고 그 값으로 주문하고 싶습니다. 나는

<div ng-controller="myCtrl" ng-app="myApp"> 
    <ul> 
     <li ng-repeat="(key,value) in colors | orderBy:value"> 
     {{key}} ({{value}}) 
     </li> 
    </ul> 
</div> 

으로 시도했다 그러나 해 orderBy 필터는 현재 데이터 양식을 할 수있는 방법이 있나요

합니다 (plunkr here 참조) 트릭을 할 것 같지 않거나입니다 원하는 결과를 얻기 위해 데이터를 구성하는 더 좋은 방법은 무엇입니까? 미리 감사드립니다!

+0

개체를 사용할 수 있습니다에는 순서가 없으며 직접 – charlietfl

답변

2

the documentation과 같이 orderBy는 객체가 아니라 배열을 입력으로 간주합니다. 일반적으로 지원되지만, ng-repeat를 사용하여 객체를 사용하는 것이 좋은 생각이었습니다.

$scope.colors = []; 
angular.forEach(occurrences, function(value, key) { 
    $scope.colors.push({ 
     color: key, 
     count: value 
    }); 
}); 

을 다음

<li ng-repeat="element in colors | orderBy:'count'"> 
    {{ element.color }} ({{ element.count }}) 
</li> 

updated plunkr를 참조 사용

그냥 배열로 객체입니다.

+0

완벽하게 작동 정렬 할 수 없습니다. 감사! – Joe82

2

내가 대신과 같이 배열을 사용합니다 :

colors = [{color: 'red', value: 1}, {color: 'blue', value: 2}] 

는 그런 다음

ng-repeat="color in colors | orderBy:'value'" 

Plunkr

+0

잘 작동합니다. 배열로 변환하는 방법을 보여주기 때문에 다른 하나를 올바른 것으로 표시했습니다. 어쨌든 통찰력을 가져 주셔서 감사합니다! – Joe82