2015-01-03 5 views
1

하나의 속성에 하이픈이있는 JSON 파일이 있습니다. ng-click을 사용하여 해당 속성을 사용하여 JSON 데이터를 정렬하고 싶습니다. 여기 JSON 하이픈으로 각주 정렬

내 코드입니다 : http://codepen.io/anon/pen/zxooMv

<a href="#" ng-click="orderByField='square-miles'; reverseSort = !reverseSort"> 

가 작동하지 않고 둘

<a href="#" ng-click="orderByField=['square-miles']; reverseSort = !reverseSort"> 

내가 그것을 위해 사용해야하는 구문은 무엇을 작동하지하는 것입니까?

감사합니다.

square - miles 

이 극복하려면 대신 다음과 같이 자신의 getter 함수를 전달할 수 있습니다 :

<tr ng-repeat="state in data.states.state|orderBy:orderBy(orderByField):reverseSort"> 

와의

답변

3

orderBy는 표현으로 당신의 재산을 구문 분석 할 내부적으로 $parse 서비스를 사용하여 귀하의 컨트롤러 :

$scope.orderBy = function(property) { 
    return function(item) { 
    return item[property]; 
    }; 
}; 

데모 :http://codepen.io/anon/pen/RNoZLw

+0

귀하의 제안은 귀하의 데모에 대한 매력처럼 작동합니다. 그러나 더 많은 JSON 데이터를 추가 할 때 무작위로 square-mile을 기반으로 데이터를 정렬하는 것으로 보입니다. http://codepen.io/anon/pen/zxooMv – AvoQ

+0

관련없는 문제입니다. square-mile 값은 문자열이므로이 순서대로 정렬됩니다. 자연 정렬 순서를 기대하고 있다고 가정합니다. blog.codinghorror.com/sorting-for-humans-natural-sort-order – tasseKATT

+0

인구 중 하나를 '8888888888'로 설정하고 기본 orderBy를 사용하면 동일한 동작을 볼 수 있습니다 http://codepen.io/anon/pen/JobOEJ – tasseKATT