2015-01-03 2 views
1

У меня есть JSON-файл с дефис в одном атрибуте. Я хочу сортировать JSON-данные с этим атрибутом, используя ng-click.Угловой порядок с 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"> 

Что синтаксис я должен использовать для того, чтобы он работал?

Спасибо.

ответ

3

orderBy использует $parse сервис внутренне который будет анализировать вашу собственность как выражение:

square - miles 

Чтобы обойти эту проблему вы можете вместо того, чтобы передать свою собственную функцию геттер, как это:

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

И в ваш контроллер:

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

Демонстрация:http://codepen.io/anon/pen/RNoZLw

+0

Ваше предложение работает как очарование вашей демонстрации. Однако, когда я добавил еще несколько JSON-данных, он сортирует данные на основе квадратной мили случайно. Посмотрите http://codepen.io/anon/pen/zxooMv – AvoQ

+0

Это несвязанная проблема. Они сортируются в этом порядке, так как значения квадратных миль являются строками. Я предполагаю, что вы ожидали естественного порядка сортировки: blog.codinghorror.com/sorting-for-humans-natural-sort-order – tasseKATT

+0

Если вы установили одну из популяций в '8888888888' и используете по умолчанию orderBy, вы заметите такое же поведение (он не будет сверху): http://codepen.io/anon/pen/JobOEJ – tasseKATT

Смежные вопросы