AngularJS | OrderBy не является массивом - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу добавить возможность сортировки в столбец таблицы, но получаю эту ошибку:

[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)
  };

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Вы должны изменить повтор на 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>
0 голосов
/ 05 ноября 2018

Я просто изменил следующее:

  $scope.sortingFn = (alert) => {
    return sortAlerts(alert, $scope.sortBy)
  };

К

  const sortingFn = (alert) => {
    return sortAlerts(alert, $scope.sortBy)
  };

Теперь это работает. Без ошибок, ничего ... Спасибо за помощь, ребята !!

...