Проблема с сортировкой таблиц данных 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

Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
0
1 206
1

Ответы 1

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

Дата в североевропейской нотации аля 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

Другие вопросы по теме