Я хочу добавить возможность сортировки в столбец таблицы, но получаю такую ошибку:
[orderBy:notarray] Expected array but received: 0
Кроме того, сортировка вообще не работает. В то время как стрелки вверх и вниз меняются местами, и отладчик, кажется, получает правильную информацию.
Мой HTML:
<th class = "text-center"><a style = "color:black"
ng-click = "sortColumn('severity')">
Level
<span ng-show = "sortTable('severity')" class = "fa fa-caret-down"></span>
<span ng-show = "sortTable('severity', false)" class = "fa fa-caret-up">
</span>
</a>
</th>
<th><a style = "color:black" ng-click = "sortColumn('getTimeAgo')">
Timestamp
<span ng-show = "sortTable('getTimeAgo')" class = "fa fa-caret-down">
</span>
<span ng-show = "sortTable('getTimeAgo', false)" class = "fa fa-caret-up">
</span>
</a>
</th>
<tbody ng-repeat = "t in Ctrl.notifications | filter : search |
filter : Ctrl.customFilter track by $index |
orderBy:sortingFn:sortReverse"
ng-style = "$index != 0 ? 'border-top:0px' : ''">
CTRL:
$scope.sortColumn = (sortBy) => {
$scope.sortReverse = !$scope.sortReverse;
$scope.sortBy = sortBy;
};
$scope.sortTable = (sortBy, sortReverse = true) =>
$scope.sortBy === sortBy && $scope.sortReverse === sortReverse;
$scope.sortAlerts = (alert, sortBy) => {
switch (sortBy) {
case 'severity':
return alert.severity;
case 'getTimeAgo':
return alert.getTimeAgo;
default:
return alert[sortBy]
}
};
$scope.sortingFn = (alert) => {
return sortAlerts(alert, $scope.sortBy)
};
Убедитесь, что ваш массив содержит элементы
Не работает. Я получаю это: Error: [$parse:syntax] Syntax Error: Token 'track' is an unexpected token at column 40 of the expression [$index | orderBy:sortingFn:sortReverse track by $index] starting at [track by $index].
@PrasadTelkikar. Похоже, что [sortBy] не определен. Какие-либо предложения?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я просто изменил следующее:
$scope.sortingFn = (alert) => {
return sortAlerts(alert, $scope.sortBy)
};
К
const sortingFn = (alert) => {
return sortAlerts(alert, $scope.sortBy)
};
Теперь это работает. Никаких ошибок, ничего ... Спасибо за помощь, ребята !!
Вы должны изменить повторение на tr. Итак, эффект orderby на tr
<tr ng-repeat = "t in Ctrl.notifications | filter : search |
filter : Ctrl.customFilter track by $index |
orderBy:sortingFn:sortReverse">
<td>{{t.xxx}}</td>
<td>{{t.yyyy}}</td>
</tr>
попробуйте записать
track by $indexпосле все ваши фильтры