Bootstrap3でAngularJSを使用 pagination

“Angular-ui bootstrap”を使用して、Bootstrap3のJavaScript部分をAngularJSに置き換えることができます。今回はpaginationのサンプルを作成しました。
 
※オンラインマニュアル
Angular directives for Bootstrap

Angular-ui bootstrap : 2.5.0
AngularJS : 1.6.5
Bootstrap : 3.3.7
 


<!DOCTYPE html>
<html ng-app="demoApp">
  <head>
......
    <script src="../js/angular-1.6.5.min.js"></script>
    <script src="../js/ui-bootstrap-tpls-2.5.0.min.js"></script>
    <link href="../js/app.js">
    <link href="../css/bootstrap-3.3.7.min.css" rel="stylesheet">
  </head>
.....
<div ng-controller="PaginationDemoCtrl">
  <ul uib-pagination total-items="totalitems"
              ng-model="currentpage"
              max-size="maxsize"
              items-per-page="itemsperpage"
              class="pagination-sm"
              previous-text="前へ"
              next-text="次へ"
              first-text="最初"
              last-text="最後"
              boundary-links="true">
  </ul>
  <ul>
    <li ng-repeat="item in currentitems">
      <p>{{item.id}}:{{item.content}}</p>
    </li>
  </ul>
  <ul uib-pagination total-items="totalitems"
              ng-model="currentpage"
              max-size="maxsize"
              items-per-page="itemsperpage"
              class="pagination-sm"
              previous-text="前へ"
              next-text="次へ"
              first-text="最初"
              last-text="最後"
              boundary-links="true"
              rotate="false">
  </ul>
</div>

var demoApp = angular.module('demoApp', ['ui.bootstrap']);

demoApp.controller("PaginationDemoCtrl", function($scope) {
  $scope.items = [
    {id:1,content: "記事1の中身です。"},
    {id:2,content: "記事2の中身です。"},
・・・・
    {id:30,content: "記事30の中身です。"}
  ];
  $scope.maxsize = 5;
  $scope.itemsperpage = 2;
  $scope.totalitems = $scope.items.length;
  $scope.currentpage = 1;
  var start = 0;
  var end = start + $scope.itemsperpage;
  $scope.currentitems = $scope.items.slice(start,end);

  $scope.$watch('currentpage', function() {
    start = ($scope.currentpage - 1) * $scope.itemsperpage;
    end = start + $scope.itemsperpage;
    $scope.currentitems = $scope.items.slice(start,end);
  },true);
});

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください