【问题标题】:orderby date angularjs ng-repeatorderby date angularjs ng-repeat
【发布时间】:2017-01-12 05:19:31
【问题描述】:

我正在尝试将“日期”与 ng-repeat 一起订购,但我的日期格式是“日期”:“Sun, 01 Sep 2016 08:47:53 -0400”。我尝试使用 momentjs,但我得到了一个错误的列表。

请问,我如何按日期订购

http://codepen.io/netwrkx/pen/WGbwgY?editors=101

<tr ng-repeat="expense in expenses | orderBy:'date'">
    <td>{{expense.name}}</td>
    <td>{{expense.amount}}</td>
    <td>{{expense.date |  amTimeAgo}} </td> 
</tr>

【问题讨论】:

    标签: angularjs date angularjs-ng-repeat ng-repeat angularjs-orderby


    【解决方案1】:
    <tr ng-repeat="expense in expenses | orderBy:compareDateFunc">
    

    $scope.compareDateFunc = function(dt) {
      return new Date(dt.date);
    }
    

    【讨论】:

    • 成功了!!!但我如何上升或下降 ng-repeat “-compareDateFunc” 似乎不起作用
    • return - new Date(dt.date); 更改订单
    【解决方案2】:

    您可以创建自定义过滤器dateOrder,它为内置过滤器提供输入。

    JS:

    .filter('dateOrder',function(){
    
       return function(data){ 
         angular.forEach(data,function(val,key){
           val.dateTimestamp = new Date(val.date).getTime()
    
         });
         return data; 
    
       }  
    });
    

    将你的 html 定义为:

    <tr ng-repeat="expense in expenses | dateOrder |orderBy :'dateTimestamp'">
    

    这是工作的codepen

    【讨论】:

    • 工作,谢谢。我应该关注这段代码的性能方面吗?想象一下加载 100 个 json 对象
    • 可以在controller中准备date中的时间戳数据,然后根据date. &lt;tr ng-repeat="expense in expenses | orderBy :'data'"&gt;进行过滤
    猜你喜欢
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2014-07-18
    • 2016-10-04
    • 2013-06-13
    相关资源
    最近更新 更多