Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS订单日期_Angularjs_Angularjs Orderby - Fatal编程技术网

AngularJS订单日期

AngularJS订单日期,angularjs,angularjs-orderby,Angularjs,Angularjs Orderby,我有这样的想法: <div ng-repeat="i in inv"> <p>{{i.dueDate}}</p> </div> 这应该适合您: <div ng-repeat="i in inv | orderBy:'-dueDate'"> <p>{{i.dueDate}}</p> </div> {{i.dueDate}} 您必须定义一个定制器函数,然后在orderBy表达

我有这样的想法:

  <div ng-repeat="i in inv">
      <p>{{i.dueDate}}</p>
  </div>

这应该适合您:

<div ng-repeat="i in inv | orderBy:'-dueDate'">
  <p>{{i.dueDate}}</p>
</div>

{{i.dueDate}}


您必须定义一个定制器函数,然后在
orderBy
表达式中使用它。例如:

$scope.dueDateFormatter = function(i) {
   var dateParts = i.dueDate.split(/\//);
   return dateParts[2] 
       + '-' + (dateParts[0] < 10 ? '0' + dateParts[0] : dateParts[0]) 
       + '-' + (dateParts[1] < 10 ? '0' + dateParts[1] : dateParts[1]);
};

<div ng-repeat="i in inv | orderBy:dueDateFormatter">
   <p>{{i.dueDate}}</p>
</div>
$scope.dueDateFormatter=函数(i){
var dateParts=i.dueDate.split(/\/);
退货日期零件[2]
+“-”+(日期部分[0]<10?'0'+日期部分[0]:日期部分[0])
+“-”+(日期部分[1]<10?'0'+日期部分[1]:日期部分[1]);
};
{{i.dueDate}}


。该函数基本上对日期字符串进行重新排序,使年份排在第一位、次月和最后一天。如果您使用
矩.js
或类似的库,则可以使用它们的解析器。

您需要将字符串转换为YYYY-MM-DD格式

  • {{item.name}
  • $scope.orderByDate = function(item) {
    var parts = item.dueDate.split('/');
    var date = new Date(parseInt(parts[2], parseInt(parts[0]), parseInt(parts[1])));
    
    return date;
    
    })

    演示

    您能确认dueDate是否正确排序吗?对不起,我不明白您的意思。当然,仅使用排序依据:'dueDate'并不能解决这个问题:这些值将被排序为字符串,而不是日期。因此,例如,“2015年1月1日”将被视为比“2014年2月31日”更“老”。这个答案更适合我的需要,因为日期是作为字符串接收的。谢谢@raina77ow
    $scope.orderByDate = function(item) {
    var parts = item.dueDate.split('/');
    var date = new Date(parseInt(parts[2], parseInt(parts[0]), parseInt(parts[1])));
    
    return date;