ng-table sorting not working ng-table sorting not working angularjs angularjs

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-repeatinstead of myValues:

<tr ng-repeat="user in $data">


In your HTML you need to update the myValues to be $data.

<tr ng-repeat="user in $data">

Plunker


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 accesses getData():

<tr ng-repeat="user in $data">