pagination.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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: 'pagination.html',
  11. replace: true,
  12. link: function (scope, location) {
  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. location.hash = "#/apps?page=" + page;
  38. }
  39. };
  40. scope.selectPrevious = function () {
  41. if (!scope.noPrevious()) {
  42. scope.selectPage(scope.currentPage - 1);
  43. }
  44. };
  45. scope.selectNext = function () {
  46. if (!scope.noNext()) {
  47. scope.selectPage(scope.currentPage + 1);
  48. }
  49. };
  50. }
  51. };
  52. });