ng-repeat:最近限制为10个例外

时间:2016-05-29 20:52:52

标签: javascript angularjs

我有一个未排序的对象数组:

[{ name: 'Daryl', interview: Sun May 19 2016 }, { name: 'John', interview: Monday May 30 2016 }, { name: 'Jim', interview: Monday May 30 2016, cancelled: true }]

我想显示最多十个项目,按日期排序,但优先考虑具有特定属性的对象(即,任何“已取消”标志设置为true的对象将出现在其余项目的上方)。如果我使用ng-repeat过滤器/限制:

<div ng-repeat="people in peoples | limitTo: 10 | orderBy: '-interview'">

如何将取消标记的对象保留在顶部?

1 个答案:

答案 0 :(得分:1)

<div ng-repeat="people in peoples | 
                limitTo: 10 | orderBy: '-interview' | filter:customFilter">

您的custom filter如下所示。

app.filter('customFilter', function() {
    return function( items ) {
      var filtered = [];
      angular.forEach(items, function(item) {
        if(item.hasOwnProperty("cancelled") && item.cancelled === true)
            filtered.unshift(item);
        else
            filtered.push(item);
      });
      return filtered;
    };
});