Angularjs—将变量发送到纯JavaScript函数并返回orderBy筛选器的正确方法

Angularjs—将变量发送到纯JavaScript函数并返回orderBy筛选器的正确方法,javascript,angularjs,angularjs-orderby,Javascript,Angularjs,Angularjs Orderby,我不知道如何处理这个问题 我正在从服务器{createdOnT:“Sun Aug 04 10:27:39 IDT 2013”}接收一个JSON。现在我想将JSON的值转换为javscript日期对象。所以在我的控制器中,我有一个如下的函数 $scope.getdate = function(date) { var unformatedDate = date; var formated=unformatedDate.replace("IDT",""); var angformat

我不知道如何处理这个问题

我正在从服务器
{createdOnT:“Sun Aug 04 10:27:39 IDT 2013”}
接收一个JSON。现在我想将JSON的值转换为javscript日期对象。所以在我的控制器中,我有一个如下的函数

$scope.getdate = function(date) {   
  var unformatedDate = date;
  var formated=unformatedDate.replace("IDT","");
  var angformat=new Date(formated);
  $rootScope.date = angformat;
  return $rootScope.date;
} 
<span ng-class="getdate(val.createdOnT)">
  <b>Date: &nbsp</b>{{date| date:'medium'}}
</span>
<li ng-repeat="(key, val) in JSON | orderBy:'-date'">
在我看来,我这样调用函数

$scope.getdate = function(date) {   
  var unformatedDate = date;
  var formated=unformatedDate.replace("IDT","");
  var angformat=new Date(formated);
  $rootScope.date = angformat;
  return $rootScope.date;
} 
<span ng-class="getdate(val.createdOnT)">
  <b>Date: &nbsp</b>{{date| date:'medium'}}
</span>
<li ng-repeat="(key, val) in JSON | orderBy:'-date'">

日期:{Date | Date:'medium'}
最后试着像这样订购

$scope.getdate = function(date) {   
  var unformatedDate = date;
  var formated=unformatedDate.replace("IDT","");
  var angformat=new Date(formated);
  $rootScope.date = angformat;
  return $rootScope.date;
} 
<span ng-class="getdate(val.createdOnT)">
  <b>Date: &nbsp</b>{{date| date:'medium'}}
</span>
<li ng-repeat="(key, val) in JSON | orderBy:'-date'">
  • 最后,我想将转换后的值发送到DOM,并使用angular的orderBy过滤器按降序排列结果。我猜我的流程有问题,因为我试图在getdate函数转换日期之前使用orderBy过滤器

    谢谢你,
    吉顿

    我觉得你的尝试不太对

    您正在将getdate的结果传递到ng class指令中——这将完成的所有工作是将css类与函数的结果应用到span。如果您在chrome之类的东西中检查生成的html,您将看到这种情况

    相反,您应该在控制器中循环返回的数据,将函数应用于正确的字段并将结果存储回该字段,或者

    直接在过滤器上应用函数,使其成为orderby:'getdate(val.createdOnT)'

    最后一个选项可能是您想要做的。看


    因此,我发现从服务器接收到的JSON是一个对象,而不是数组。这就是为什么orderBy函数不起作用,也就是为什么视图中的数据以非有序方式显示。

    您好,Matthew,谢谢您的回答。我将尝试控制器的选项。。。我无法直接应用该函数,因为日期值不是javscript对象,而且据我所知orderBy只接受javscript日期对象。如果您可以处理添加另一个依赖项,您可以使用矩.js库将日期转换为UNIX时间戳,该时间戳将按OrderByMatthew正确排序,但我想解决这个问题,而不添加另一个依赖项。。。。