Как заказать в AngularJS с использованием свойства Nested

Это json, который создается с помощью PHP

[{"Sale":{"id":"1","customer_id":"1","amount":"15","created":"2014-05-17"}}]

Выполнение orderBy:id явно не работает. Я читал в других сообщениях, что для такого типа структуры данных необходимо создать функцию orderBy. Я не могу создать функцию. Может кто-нибудь, пожалуйста, скажите мне, как правильно подойти к этому?

Ответ 1

Эти типы манипуляций с данными Мне нравится держать их в соответствующих объектах angular, и по этой причине я бы создал свой собственный фильтр, например:

var sampleSource=  [{"Sale":{"id":"8","customer_id":"1","amount":"15","created":"2014-05-17"}}, {"Sale":{"id":"5","customer_id":"6","amount":"15","created":"2015-05-17"}}];

var myApp = angular.module('myApp',[]);

myApp.filter('myFilter', function() {
 return function(items) {  
    items.sort(function(a,b){   
        if (parseInt(a.Sale.id) > parseInt(b.Sale.id))
            return 1;
        if (parseInt(a.Sale.id) < parseInt(b.Sale.id))
            return -1;         
        return 0; })
});

Важно: Я рекомендую настраиваемый фильтр, потому что в качестве личного предпочтения мне не нравится перегружать мои контроллеры или другие объекты задачами (кодом), которые я могу разделить на других объектах, что дает мне больше независимости и (одна из вещей, которые мне нравятся angular), но помимо этого личного предпочтения я бы сказал, что это не единственный способ, но если вы разделяете мои причины, я надеюсь, что это поможет.

Ответ 2

Предположим, что у вас есть:

$scope.sales = [{"Sale":{"id":"1"}},{"Sale":{"id":"2"}},{"Sale":{"id":"3"}}];

Почему бы просто не сделать следующее:

<div ng-repeat="sale in sales | orderBy:'Sale.id':true">
    {{ sale.Sale.id }}
</div>

Это хорошо работает с моим делом. Может быть, Angular не поддерживал его в то время, когда вы задавали вопрос.