AngularJS Pagination With ng-table

http://stackoverflow.com/q/26333302/1144203

by prakgarnly

HTML

<script src="http://bazalt-cms.com/assets/ng-table/0.3.0/ng-table.js"></script>
<link rel="stylesheet" href="http://bazalt-cms.com/assets/ng-table/0.3.0/ng-table.css">
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<div ng-controller="DemoCtrl">
    <p><strong>Page:</strong> {{tableParams.page()}}</p>
    <p><strong>Count per page:</strong> {{tableParams.count()}}</p>
    <table ng-table="tableParams" class="table">
        <tr ng-repeat="user in $data">
            <td data-title="'Name'">{{user.name}}</td>
            <td data-title="'Age'">{{user.age}}</td>
        </tr>
    </table>
</div>

CSS

body {
    padding: 10px !important;
}

JavaScript

var app = angular.module('main', ['ngTable']).controller('DemoCtrl', function($scope, $http, ngTableParams) {
    var data = [{name: "Moroni", age: 50}, {name: "Tiancum", age: 43},
                {name: "Jacob", age: 27}, {name: "Nephi", age: 29},
                {name: "Enos", age: 34}, {name: "Tiancum", age: 43},
                {name: "Jacob", age: 27}, {name: "Nephi", age: 29}, {name: "Enos", age: 34},
                {name: "Tiancum", age: 43}, {name: "Jacob", age: 27},
                {name: "Nephi", age: 29}, {name: "Enos", age: 34},
                {name: "Tiancum", age: 43}, {name: "Jacob", age: 27},
                {name: "Nephi", age: 29}, {name: "Enos", age: 34}];    
    var input = $.param({json: JSON.stringify(data)});
    var url = "/echo/json/"; // replace this URL
    
    $http.post(url, input).success(function(response, status) {
      console.log(response); // log all the returned data to the debugger console  
      $scope.tableParams = new ngTableParams(
             {page: 1, count: 10}, 
             {total: response.length,
              getData: function($defer, params) {
                         $defer.resolve(response.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                       }
             });
    })
});