Orders a specified array
by the expression
predicate.
Note: this function is used to augment the Array
type in Angular expressions. See
angular.Array
for more informaton about Angular arrays.
angular.Array.orderBy(array, expression[, reverse]);
array – {Array} –
The array to sort.
expression – {function(*)|string|Array.<(function(*)|string)>} –
A predicate to be used by the comparator to determine the order of elements.
Can be one of:
function
: Getter function. The result of this function will be sorted using the
<
, =
, >
operator.string
: An Angular expression which evaluates to an object to order by, such as 'name'
to sort by a property called 'name'. Optionally prefixed with +
or -
to control
ascending or descending sort order (for example, +name or -name).Array
: An array of function or string predicates. The first predicate in the array
is used for sorting, but when two items are equivalent, the next predicate is used.reverse(optional) – {boolean} –
Reverse the order the array.
{Array}
– Sorted copy of the source array.
<div ng:init="friends = [{name:'John', phone:'555-1212', age:10}, {name:'Mary', phone:'555-9876', age:19}, {name:'Mike', phone:'555-4321', age:21}, {name:'Adam', phone:'555-5678', age:35}, {name:'Julie', phone:'555-8765', age:29}]"></div> <pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre> <hr/> [ <a href="" ng:click="predicate=''">unsorted</a> ] <table ng:init="predicate='-age'"> <tr> <th><a href="" ng:click="predicate = 'name'; reverse=false">Name</a> (<a href ng:click="predicate = '-name'; reverse=false">^</a>)</th> <th><a href="" ng:click="predicate = 'phone'; reverse=!reverse">Phone Number</a></th> <th><a href="" ng:click="predicate = 'age'; reverse=!reverse">Age</a></th> <tr> <tr ng:repeat="friend in friends.$orderBy(predicate, reverse)"> <td>{{friend.name}}</td> <td>{{friend.phone}}</td> <td>{{friend.age}}</td> <tr> </table>
it('should be reverse ordered by aged', function() { expect(binding('predicate')).toBe('Sorting predicate = -age; reverse = '); expect(repeater('.doc-example-live table', 'friend in friends').column('friend.age')). toEqual(['35', '29', '21', '19', '10']); expect(repeater('.doc-example-live table', 'friend in friends').column('friend.name')). toEqual(['Adam', 'Julie', 'Mike', 'Mary', 'John']); }); it('should reorder the table when user selects different predicate', function() { element('.doc-example-live a:contains("Name")').click(); expect(repeater('.doc-example-live table', 'friend in friends').column('friend.name')). toEqual(['Adam', 'John', 'Julie', 'Mary', 'Mike']); expect(repeater('.doc-example-live table', 'friend in friends').column('friend.age')). toEqual(['35', '10', '29', '19', '21']); element('.doc-example-live a:contains("Phone")').click(); expect(repeater('.doc-example-live table', 'friend in friends').column('friend.phone')). toEqual(['555-9876', '555-8765', '555-5678', '555-4321', '555-1212']); expect(repeater('.doc-example-live table', 'friend in friends').column('friend.name')). toEqual(['Mary', 'Julie', 'Adam', 'Mike', 'John']); });