Angular中的自定义过滤器,具有未定义的值

时间:2015-04-01 18:55:19

标签: angularjs filter angularjs-orderby

我在Angular中有一个对象数组,我试图按照一种非常具体的方式进行排序,我无法弄明白。

以下是Javascript示例:

var app = angular.module('app',[]);

function Ctrl($scope) {
  $scope.divisions = [      
      {'group':'d','sub':1}, 
      {'group':'a'}, 
      {'group':'z','sub':2},
      {'group':'g','sub':20},
      {'group':'g'},
      {'group':'r','sub':11}];
}

以下是HTML示例:

<div class="test" ng-controller="Ctrl">
  <div ng-repeat="division in divisions | orderBy:['sub','group']">{{division.group}}-{{division.sub}}</div>
<div>

这是小提琴:https://jsfiddle.net/r4nsyp2v/1/

而不是显示如下:

d-1
z-2
r-11
g-20
a-
g-

我希望它显示如下:

g-20
r-11
z-2
d-1
a-
g-

所以我想要显示'sub'键从最大到最小(如果存在),后面带有未定义的'sub'键。并按组的字母顺序显示未定义的“子”键对象。

我还没有找到诀窍......任何想法?

1 个答案:

答案 0 :(得分:3)

您可以像这样创建自定义订单:

$scope.order = function(division) {
  return -(division.sub || 0);
}

并在HTML中

<div ng-repeat="division in divisions | orderBy:order">

参见示例https://jsfiddle.net/r4nsyp2v/2/