JS:
(function(angular) {
'use strict';
angular.module('orderByExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.friends =
[{name:'John', phone:'2-3-7', age:10},
{name:'Mary', phone:'2-3-9', age:19},
{name:'Mike', phone:'10-21-30', age:21},
{name:'Adam', phone:'1-5-9', age:35},
{name:'Julie', phone:'9-15-20', age:29}];
$scope.predicate = 'phone';
$scope.reverse = true;
$scope.order = function(predicate) {
$scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
$scope.predicate = predicate;
};
}]);
})(window.angular);
HTML:
<table class="friend">
<tr>
<th>
<button ng-click="order('phone')">Phone Number</button>
<span class="sortorder" ng-show="predicate === 'phone'" ng-class="{reverse:reverse}"></span>
</th>
</tr>
<tr ng-repeat="friend in friends | orderBy:predicate">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
<td>{{friend.age}}</td>
</tr>
</table>
Result:
Number
But i want this result:
Number
I want to sort based on Number only
Here is the plunker link: http://plnkr.co/edit/QPNVtKQCqk2nYYkFx4aX?p=preview
You can sort by numeric representation of the phone. For example like this:
$scope.friends = [...].map(function(friend) {
friend.phoneNumber = Number(friend.phone.replace(/[^\d]/g, ''));
return friend;
});
And then in template use phoneNumber
for ordering:
<th>
<button ng-click="order('phoneNumber')">Phone Number</button>
<span class="sortorder" ng-show="predicate === 'phoneNumber'" ng-class="{reverse:reverse}"></span>
</th>