【问题标题】:angular-datatables not sorting when formatting date格式化日期时角度数据表不排序
【发布时间】:2017-04-12 02:02:56
【问题描述】:

当我想格式化它们时,我在使用 angular-datables 插件对日期进行排序时遇到问题。 让我解释 : 当我使用时

<td>{{date}}</td>

结果是:

当我使用时:

{{date | date}}

结果是:

但是当我使用时:

{{date | date : 'dd/MM/yyyy'}}

结果是:

即便如此,我还是将其声明为日期格式:

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

任何想法我做错了什么?谢谢

【问题讨论】:

    标签: angularjs angular-datatables


    【解决方案1】:

    最后,我使用了与您直接从 DataTables 提供的答案类似的内容:https://datatables.net/plug-ins/sorting/date-eu

    该插件已被弃用,但可以很好地满足我的需求。

    【讨论】:

      【解决方案2】:

      我们是一个稀有物种,我们这些人使用 dd/MM/YYYY 格式 :) 默认的 date 类型仅适用于“有效”日期格式,即可以使用 Date.parse() 评估的字符串。欧洲 dd/MM/YYYY 不是其中之一。在与 momentjs 等混合之前,我认为您可以通过自定义排序插件轻松解决这个问题:

      jQuery.extend( jQuery.fn.dataTableExt.oSort, {
       "Antt-date-pre": function ( a ) {
          if (a == null || a == '') {
            return 0;
          }
          var date = a.split('/');
          return Date.parse(date[1] + '/' + date[0] + '/' + date[2])
        }
      });
      

      用法

      DTColumnDefBuilder.newColumnDef(0).
        .withOption('type', 'Antt-date')
      

      小演示 -> http://plnkr.co/edit/00vQcoeitZlrQkprN58t?p=preview

      【讨论】:

      • 我正在尝试复制您的代码,但将其用于:this.dtColumnDefs = [ DTColumnDefBuilder.newColumnDef(0) .withOption('type', 'date-euro') ]; 但我没有调用 jQuery 代码...(请注意,当我用 noSortable() 替换 withOptions 时,排序没有按预期工作)
      • @Antt 你正在使用'date-euro'?如果您已将'Antt-date' 重命名为'date-euro',它确实应该可以工作(如示例中所示)。我自己在几个应用程序中就是这样做的,当然只是用另一个命名。抱歉,不太明白关于notSortable() 的评论,如果您希望该列不可排序,但仍想对该列进行预排序,您可以在dt-options plnkr.co/edit/Wo2gtv9OAPWEZ2Fkem6u?p=preview 中使用.withOption('order', [[&lt;index&gt;, 'asc']]) 或类似名称跨度>
      • 是的,对不起,我使用'date-euro' 我仔细检查了:/'notSortable' 的东西是为了让我的 dtColumnDefs 被调用,这似乎是这种情况......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      相关资源
      最近更新 更多