根据日期动态排序ng-repeat元素



我想根据日期按元素排序。

<ion-item ng-repeat="item in PortfolioIdeaList | orderBy:'CreatedDate'" style="background-color:rgb(25, 26, 0);" ng-click="ShowIdeaDetails(item.Id)">
           <div class="row">
               <div class="col col-80">
                   <p> {{item.Title}}</p>
                </div>
                <div class="col col-20">
                   <b> {{item.Status}}</b>
                </div>
            </div>
            <div class="row">
               <div class="col col-70">
                    {{item.CreatedDate}}
                </div>
                <div class="col col-30">
                    <i class="icon ion-chevron-right icon-accessory"></i>
                </div>
            </div>
        </ion-item>

我从JSON格式的web服务获得标题,创建日期和状态。创建日期的格式为字符串MM/DD/YYYY HH:MM:SS例如6/2/1991 2:33:43 PM或12/23/2015 11:55:12 AM。但它的顺序不对。如何将字符串转换为日期,然后对其排序。

在您的代码中,如果CreatedDate是一个字符串,则您的对象将按字母数字顺序排列。

如果您想按日期订购,您可以:

  • 当您从服务器获取对象时,将此属性转换为日期

       new Date(item.CreatedDate)
    
  • 创建一个自定义过滤器,将值转换为日期并排序:

    .filter("customOrderBy", function () {
         return function (input) {
        input.sort(function(a,b){
            return new Date(a.CreatedDate) > new Date(b.CreatedDate);
        });
        return input;
    }
    });
    

    在你的模板中调用它:

    ng-repeat="item in PortfolioIdeaList | customOrderBy"
    

但是在任何情况下,您都需要将字符串转换为YYYY-MM-DD格式

orderBy为我工作后添加:false

<ion-item ng-repeat="item in PortfolioIdeaList | orderBy:'CreatedDate':false" style="background-color:rgb(25, 26, 0);" ng-click="ShowIdeaDetails(item.Id)">

最新更新