diff options
| author | Misko Hevery | 2010-09-26 19:43:39 +0200 | 
|---|---|---|
| committer | Misko Hevery | 2010-09-26 19:43:39 +0200 | 
| commit | 9171a2b2b50d0a8217c98e0017a7d2a0a1a37380 (patch) | |
| tree | 99061623acebc77907e3948c2ffeb8bcca1a7fc8 /src/apis.js | |
| parent | 27868f17ded5e668aad17739cecd228dc3c87219 (diff) | |
| download | angular.js-9171a2b2b50d0a8217c98e0017a7d2a0a1a37380.tar.bz2 | |
Added support for functions to $orderBy method
http://github.com/angular/angular.js/issues#issue/23
Diffstat (limited to 'src/apis.js')
| -rw-r--r-- | src/apis.js | 48 | 
1 files changed, 26 insertions, 22 deletions
| diff --git a/src/apis.js b/src/apis.js index 764c35ea..70d9dc8b 100644 --- a/src/apis.js +++ b/src/apis.js @@ -132,6 +132,31 @@ var angularArray = {      return count;    },    'orderBy':function(array, expression, descend) { +    expression = isArray(expression) ? expression: [expression]; +    expression = map(expression, function($){ +      var descending = false, get = $ || identity; +      if (isString($)) { +        if (($.charAt(0) == '+' || $.charAt(0) == '-')) { +          descending = $.charAt(0) == '-'; +          $ = $.substring(1); +        } +        get = expressionCompile($).fnSelf; +      } +      return reverse(function(a,b){ +        return compare(get(a),get(b)); +      }, descending); +    }); +    var arrayCopy = []; +    for ( var i = 0; i < array.length; i++) { arrayCopy.push(array[i]); } +    return arrayCopy.sort(reverse(comparator, descend)); + +    function comparator(o1, o2){ +      for ( var i = 0; i < expression.length; i++) { +        var comp = expression[i](o1, o2); +        if (comp !== 0) return comp; +      } +      return 0; +    }      function reverse(comp, descending) {        return toBoolean(descending) ?            function(a,b){return comp(b,a);} : comp; @@ -148,28 +173,7 @@ var angularArray = {          return t1 < t2 ? -1 : 1;        }      } -    expression = isArray(expression) ? expression: [expression]; -    expression = map(expression, function($){ -      var descending = false; -      if (typeof $ == "string" && ($.charAt(0) == '+' || $.charAt(0) == '-')) { -        descending = $.charAt(0) == '-'; -        $ = $.substring(1); -      } -      var get = $ ? expressionCompile($).fnSelf : identity; -      return reverse(function(a,b){ -        return compare(get(a),get(b)); -      }, descending); -    }); -    var comparator = function(o1, o2){ -      for ( var i = 0; i < expression.length; i++) { -        var comp = expression[i](o1, o2); -        if (comp !== 0) return comp; -      } -      return 0; -    }; -    var arrayCopy = []; -    for ( var i = 0; i < array.length; i++) { arrayCopy.push(array[i]); } -    return arrayCopy.sort(reverse(comparator, descend)); +    }  }; | 
