I just took the simplest demo from http://docs.angularjs.org/api/ng.filter:orderBy and just change the value of age to have different number of digit. It stop working as it
You just have to remove quotes in age variable because it's an integer, not a string:
$scope.friends =
[{name:'John', phone:'555-1212', age:2352345},
{name:'Mary', phone:'555-9876', age:4235243},
{name:'Mike', phone:'555-4321', age:241},
{name:'Adam', phone:'555-5678', age:34325},
{name:'Julie', phone:'555-8765', age:1234}]
Changing your predicate to the following will also work:
<th><a href="" ng-click="predicate = '1*age'; reverse=!reverse">Age</a></th>
I know is a little late for this answer, but in the newest version of Angular, you can use a function as the orderBy's predicate (https://docs.angularjs.org/api/ng/filter/orderBy). In this case, add to the controller a function like next
$scope.orderByFunction = function(friend){
return parseInt(friend.age);
};
and change the predicate in the orderBy filter
ng-repeat="friend in friends | orderBy:orderByFunction:reverse"
This will do the trick!
Add JSON_NUMERIC_CHECK code while converting array into json. json_encode($anyarray,JSON_NUMERIC_CHECK);
you have to convert age to type Number to make to orderBy
to work as it should.
Add to your controller to sort String age as float:
angular.forEach($scope.friends, function (friend) {
friend.age = parseFloat(friend.age);
});
It should work,
See PLunker
AngularJs have in built functionalities to sort the values.But before sorting float values we need to convert the values to float using the parseFloat() javavscript function .
http://hubpages.com/technology/How-to-sort-table-content-filter-table-data-and-add-pagination-using-Angular-JS