2

角度jsと角度-uiブートストラップを使用してサーバー側のページ付けを実装する方法をいくつか提案してください。私は、angualr-ui bootsrapページ区切りディレクティブで選択された現在のページに従って、ng-repeatを使用してテーブルリストをページ付けします。我々はサーバへの頻繁な呼び出しを避ける必要があるので。一度にサーバーから50アイテムを取得する必要があります。ページあたり10個のアイテムが表示されています。より大きなデータセットにページを分ける必要があるため、パフォーマンス上の理由からng-repeatモデルには常に50個のアイテムが含まれている必要があります。angle-uiブートストラップを使用してangularjsでサーバー側のページ付けを実装する方法。

答えて

6

DirPaginateは、このデモのために、このPlunkerを見てください、この質問

の要件を満たしていますものです。

サーバーサイドページネーションを使用する場合は、JSON応答をこの形式で取得する必要があります。あなたのJSON応答の

フォーマット

{ 
    Count: 1400, 
    Items: [ 
     { // item 1... }, 
     { // item 2... }, 
     { // item 3... }, 
     ... 
     { // item 25... } 
    ] 
} 

あなたが見てする必要がある唯一の事はあなたが私たちのディレクティブにそれを渡すために、これを必要がありますので、あなたがあなたのデータベース内の項目の合計数を取得することです。

あなたの角度コントローラのフォーマット

.controller('UsersController', function($scope, $http) { 
    $scope.users = []; 
    $scope.totalUsers = 0; 
    $scope.usersPerPage = 25; // this should match however many results your API puts on one page 
    getResultsPage(1); 

    $scope.pagination = { 
     current: 1 
    }; 

    $scope.pageChanged = function(newPage) { 
     getResultsPage(newPage); 
    }; 

    function getResultsPage(pageNumber) { 
     // this is just an example, in reality this stuff should be in a service 
     $http.get('path/to/api/users?page=' + pageNumber) 
      .then(function(result) { 
       $scope.users = result.data.Items; 
       $scope.totalUsers = result.data.Count 
      }); 
    } 
}) 

、最終的にはこれはあなたのhtml

HTML

<div ng-controller="UsersController"> 
    <table> 
     <tr dir-paginate="user in users | itemsPerPage: usersPerPage" total-items="totalUsers" current-page="pagination.current"> 
      <td>{{ user.name }}</td> 
      <td>{{ user.email }}</td> 
     </tr> 
    </table> 

    <dir-pagination-controls on-page-change="pageChanged(newPageNumber)"></dir-pagination-controls> 
</div> 

参照してくださいにそれを統合します方法の例ですこのページの非同期データセクションでの作業。

https://github.com/michaelbromley/angularUtils/tree/master/src/directives/pagination#working-with-asynchronous-data

0

私はDIR-ページネーションライブラリを使用。それは非常に使いやすく軽量です。 documentationも非常に良いです。

ここにはimplementationの例があります。

編集:おっと、気づいたRaman Sahasiは、彼の答えで同じ提案をしました。私を維持する、私はエンドツーエンドの実装のチュートリアルは、いくつかのために役立つと信じています。

関連する問題