2014-09-10 58 views
0

如何在角度中编写自定义排序功能?

<div class="item" data-ng-repeat="course in courses | filter:filterCourses | orderBy:predicate">... 

$scope.predicate = function(course) { 
    //$scope.orderProp 
}; 

什么代码,我需要把谓词中,所以我可以

  1. 为了同样的方式默认排序依据:谓语订货会(不当然如果这是有道理的)
  2. 地方空course.StartDate在名单的末尾

注:

  • 当然是如标题,的startDate, 代码
  • $ scope.orderProp不同属性的对象包含的价值排序:标题,的startDate, 代码。当的startDate是空的,我想在列表的末尾放置这些项目在 但仍保持按日期排序正确,启动 日期是“整数”那我以后更好的形式NG-日期显示

谢谢

答: 这里是我结束了 http://jsfiddle.net/3hz2j8j7/

+0

您是否尝试阅读'orderBy'文档? – charlietfl 2014-09-10 21:19:04

+0

看到了这些,但我不知道它们与我的问题有关 – orbitory 2014-09-10 21:38:08

+0

什么是_“default orderBy:predicate”_ ??? – gkalpak 2014-09-10 22:25:29

回答

2

排序依据可以接受谓词的列表(有点像说:“为了通过,那么B”)。所以,你的第一断言将确保空白的开始日期走在最后,你的第二个将使用orderProp的价值:

<div ... orderBy:[nonEmptyStartDate, orderProp]"> 

$scope.nonEmptyStartDate = function(course) { 
    return course.startDate=="" ? 1 : 0; 
} 
1

除了康斯坦丁回答,我为你做一jsfiddle与您的确切数据。 所有角神奇的是在

<div ng-repeat="course in courses|orderBy:[nonEmptyStartDate,orderProp]:true"> 

其中orderProp =“标题”,这样第一个数据是由非空的日期,然后再下令称号。 请让我们知道。