Проблема с сортировкой таблиц данных Angular

#angularjs #sorting #datatables #angular-datatables

#angularjs #сортировка #таблицы данных #angular-таблицы данных

Вопрос:

Я использую этот пример https://l-lin.github.io/angular-datatables/archives /#!/bootstrapIntegration для настройки моих таблиц данных. Проблема в том, что он не сортирует дату и double цену.

Пока я пытаюсь отсортировать дату, но не удалось. Я нашел много ответов, но никто не работает.

Мой javascript

 $scope.dtOptions = DTOptionsBuilder.newOptions()
  .withPaginationType('full_numbers')
  .withOption('order', [0, 'desc']);

$scope.dtColumnDefs = [
  { targets: 0, type: 'date' } 
];
  

Мой html

 <table datatable="" dt-options="dtOptions" dt-column-defs="dtColumnDefs" class="row-border hover"></table
  

Я также пробовал что-то вроде

 $scope.dtColumnDefs = [
  DTColumnDefBuilder.newColumnDef(0).withOption('type', 'date'),
];
  

И я действительно пытался изменить date на dd/MM/yy , но не работает. Моя дата в столбце отображается как 23/03/19

Ответ №1:

Сортировка таблиц данных по дате основана на Date.parse() , поэтому любая дата, недоступная анализу (или временная метка), нарушит сортировку.

Дата в североевропейской нотации ala 23/03/19 разбирается на NaN , и вот тут-то у вас и возникает проблема. Вы можете проанализировать дату в render() обратном вызове :

 DTColumnDefBuilder.newColumnDef(0).renderWidth(function(data) {
  data = data.split('/')
  return Date.parse(data[1] '-' data[0] '-' data[2]).valueOf()
})
  

или вы можете использовать пользовательский плагин сортировки, такой как date-eu -> https://datatables.net/plug-ins/sorting/date-eu