ng-table sorting not working
$defer.resolve($filter('orderBy')($scope.myValues, params.orderBy()));
will create a new sorted array but will not change $scope.myValues
.
So either, you set $scope.myValues
to the sorted array each time:
$scope.myValues = $filter('orderBy')($scope.myValues, params.orderBy());$defer.resolve($scope.myValues);
Or use $data
in ng-repeat
instead of myValues
:
<tr ng-repeat="user in $data">
You're writing to $scope.myValues
, and using that in the ng-repeat
directive - but you're sorting the data only in getData()
on the table params object.
getData()
doesn't ever change $scope.myValues
, it only uses it to return a sorted array. What you really want to do is:
- Don't make the full dataset available on the scope, but store it in a variable inside the controller:
var data = [{name: "Moroni", age: 50}, ...]
$defer.resolve($filter('orderBy')(data, params.orderBy()));
- Use
$data
inside the HTML code, because this is what accessesgetData()
:
<tr ng-repeat="user in $data">