Angularjs-将变量发送到纯JavaScript函数并返回orderBy过滤器的正确方法



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

我正在接收来自服务器{createdOnT: "Sun Aug 04 10:27:39 IDT 2013"}的JSON。现在,我想将JSON的值转换为javscript 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'">

最后,我想将转换后的值发送到DOM,并使用angular的orderBy过滤器按降序排列结果。我的猜测是我的流出了问题,因为我试图在getdate函数转换日期之前使用orderBy筛选器。。。

谢谢你,Gidon

你的尝试在我看来不太正确。

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

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

直接在筛选器上应用该函数,使其按顺序排列:"getdate(val.createdOnT)"

最后一个选项可能是你想做的。参见

http://docs.angularjs.org/api/ng.filter:orderBy

因此,我发现从服务器接收的JSON是Object,而不是Array。这就是orderBy函数不起作用的原因,也是视图中的数据以无序方式显示的原因。

最新更新