pagination.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. var myApp = angular.module('myApp');
  2. myApp.directive('pagination', function () {
  3. return {
  4. restrict: 'E',
  5. scope: {
  6. numPages: '=',
  7. currentPage: '=',
  8. onSelectPage: '&'
  9. },
  10. templateUrl: 'directives/pagination.html',
  11. replace: true,
  12. link: function (scope) {
  13. scope.$watch('numPages', function (value) {
  14. scope.pages = [];
  15. for (var i = 1; i <= value; i++) {
  16. scope.pages.push(i);
  17. }
  18. if (scope.currentPage > value) {
  19. scope.selectPage(value);
  20. }
  21. });
  22. scope.noPrevious = function () {
  23. return scope.currentPage === 1;
  24. };
  25. scope.noNext = function () {
  26. return scope.currentPage === scope.numPages;
  27. };
  28. scope.isActive = function (page) {
  29. return scope.currentPage == page;
  30. };
  31. scope.selectPage = function (page) {
  32. if (!scope.isActive(page)) {
  33. scope.currentPage = page;
  34. scope.onSelectPage({
  35. page: page
  36. });
  37. }
  38. };
  39. scope.selectPrevious = function () {
  40. if (!scope.noPrevious()) {
  41. scope.selectPage(scope.currentPage - 1);
  42. }
  43. };
  44. scope.selectNext = function () {
  45. if (!scope.noNext()) {
  46. scope.selectPage(scope.currentPage + 1);
  47. }
  48. };
  49. }
  50. };
  51. });