How can you do server side paging with Angular's UI Bootstrap pagination directive

前端 未结 2 841
有刺的猬
有刺的猬 2021-02-01 08:01

Hi we are wanting to do server side paging with Angular\'s UI Bootstrap pagination directive. We know how to create a RESTful endpoint to serve up the pages from our servers but

相关标签:
2条回答
  • 2021-02-01 08:14

    Please see small demo below

    angular.module('app', ['ui.bootstrap']);
    angular.module('app').controller('PaginationDemoCtrl', function($scope, $http) {
    
      $scope.currentPage = 1;
     $scope.limit= 10;
    
    
      $scope.tracks = [];
      getData();
    
    
      function getData() {
        $http.get("https://api.spotify.com/v1/search?query=iron+&offset="+($scope.currentPage-1)*$scope.limit+"&limit=20&type=artist")
          .then(function(response) {
            $scope.totalItems = response.data.artists.total
            angular.copy(response.data.artists.items, $scope.tracks)
    
    
          });
      }
    
    //get another portions of data on page changed
      $scope.pageChanged = function() {
        getData();
      };
    
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.12.0.js"></script>
    
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
    
    <body ng-app="app">
    
      <div ng-controller="PaginationDemoCtrl">
        <h4>Sample Server Pagination</h4>
    
        <pagination total-items="totalItems" ng-model="currentPage" ng-change="pageChanged()" items-per-page="100"></pagination>
        <ul>
          <li ng-repeat="track in tracks" style="list-style:none">
    <img ng-src="{{track.images[2].url}}" alt="" width="160"/>
    {{track.name}}</li>
        </ul>
    
      </div>
    </body>

    0 讨论(0)
  • 2021-02-01 08:20

    angular.module('app', ['ui.bootstrap']);
    angular.module('app').controller('PaginationDemoCtrl', function($scope, $http) {
    
      $scope.currentPage = 1;
    
      $scope.tracks = [];
      getData();
    
    
      function getData() {
        $http.get("https://ws.spotify.com/search/1/track.json?q=kaizers+orchestra&page=" + $scope.currentPage)
          .then(function(response) {
            $scope.totalItems = response.data.info.num_results
            angular.copy(response.data.tracks, $scope.tracks)
    
    
          });
      }
    
    //get another portions of data on page changed
      $scope.pageChanged = function() {
        getData();
      };
    
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.12.0.js"></script>
    
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
    
    <body ng-app="app">
    
      <div ng-controller="PaginationDemoCtrl">
        <h4>Sample Server Pagination</h4>
    
        <pagination total-items="totalItems" ng-model="currentPage" ng-change="pageChanged()" items-per-page="100"></pagination>
        <ul>
          <li ng-repeat="track in tracks">{{track.name}}</li>
        </ul>
    
      </div>
    </body>

    0 讨论(0)
提交回复
热议问题