В настоящее время у меня нет возможности сортировать столбцы моего списка, используя orderBy
-filter. Проблема в том, что у меня есть вложенный ngRepeat.Сортировка столбцов в вложенных ng-repeat (AngularJS)
Вид:
<md-list>
<md-list-item>
<span ng-repeat="item in ::hItems track by $index" ng-click="sortBy(item)" flex>
{{ ::item }}
</span>
</md-list-item>
<md-divider></md-divider>
<md-list-item ng-repeat="cItem in ::cItems | orderBy:sortType:sortReverse track by $index">
<span ng-repeat="(key, value) in ::cItem track by $index" flex>
{{ ::value }}
</span>
<md-divider></md-divider>
</md-list-item>
</md-list>
Как только пользователь нажмет на заголовке столбца функция sortBy
будет вызываться. Функция реализована в контроллере следующим образом:
//Default values:
$scope.sortType = 'NAME';
$scope.sortReverse = false;
var orderBy = $filter('orderBy');
//sortBy func:
function sortBy(columnKey) {
$scope.sortType = columnKey;
$scope.sortReverse = !$scope.sortReverse;
$scope.cItems = orderBy($scope.cItems, $scope.sortType, $scope.sortReverse);
}
список сортирует только по значению по умолчанию name
. Вот выходной массив GET-запрос:
//JSON data
[
{
"ArtNo": "DE123",
"SHORTCODE": "ABC",
"NAME": "article one",
"QUANTITY": 3,
"GROUPID": 1,
"ACTIVE": 1
},...
]
Таким образом, мне нужна вложенная ngRepeat потому, как вы можете видеть массив определяются с ключевыми числами и значениями объекта =>[0:Object, 1:Object...]
. Мне нужно только решение для моей функции sortBy
. У кого-нибудь есть идея?
Ниже мой список вывода:
ArtNo | SHORTCODE | NAME | QUANTITY
DE123 | ABC001 | article one | 3
DE456 | ABC002 | article two | 8
DE789 | ABC003 | article three | 4
DE321 | ABC004 | article four | 13
....
Пожалуйста, упростите свой код вопроса и обеспечите рабочий скрипт ... –
@EliasSoares Что вы не понимаете в моем коде? Затем я могу отредактировать мою тему. – yuro
Что такое 'md-list',' md-list-item', 'md-divider'? Я знаю, что это может не повлиять на проблему, но когда вы предоставляете наименьший код, который возникает в этой ситуации, вам легко и (или) найти проблему. –