最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
angularjs实现的前端分页控件示例
时间:2017-03-28 编辑:简简单单 来源:一聚教程网
前言:之前写个一个jQuery的分页显示插件,存在许多的bug,现在由于业务需要,学习的一点AngularJS,重新用angularjs实现了这个分页插件
实现效果图:
(效果图是加上了bootstrap的css文件)
用法:
angular-pagination.js代码:
代码如下 | 复制代码 |
/** * angularjs分页控件 * Created by CHEN on 2016/11/1. */
angular.module('myModule', []).directive('myPagination',function() { return{ restrict:'EA', replace:true, scope: { option:'=pageOption' }, template:'
' ' link:function($scope) { //容错处理 if(!$scope.option.curr || isNaN($scope.option.curr) || $scope.option.curr < 1) $scope.option.curr = 1; if(!$scope.option.all || isNaN($scope.option.all) || $scope.option.all < 1) $scope.option.all = 1; if($scope.option.curr > $scope.option.all) $scope.option.curr = $scope.option.all; if(!$scope.option.count || isNaN($scope.option.count) || $scope.option.count < 1) $scope.option.count = 10;
//得到显示页数的数组 $scope.page = getRange($scope.option.curr, $scope.option.all, $scope.option.count);
//绑定点击事件 $scope.pageClick =function(page) { if(page =='«') { page = parseInt($scope.option.curr) - 1; }elseif(page =='»') { page = parseInt($scope.option.curr) + 1; } if(page < 1) page = 1; elseif(page > $scope.option.all) page = $scope.option.all; //点击相同的页数 不执行点击事件 if(page == $scope.option.curr)return; if($scope.option.click &&typeof$scope.option.click ==='function') { $scope.option.click(page); $scope.option.curr = page; $scope.page = getRange($scope.option.curr, $scope.option.all, $scope.option.count); } };
//返回页数范围(用来遍历) functiongetRange(curr, all, count) { //计算显示的页数 curr = parseInt(curr); all = parseInt(all); count = parseInt(count); varfrom = curr - parseInt(count / 2); varto = curr + parseInt(count / 2) + (count % 2) - 1; //显示的页数容处理 if(from <= 0) { from = 1; to = from + count - 1; if(to > all) { to = all; } } if(to > all) { to = all; from = to - count + 1; if(from <= 0) { from = 1; } } varrange = []; for(vari = from; i <= to; i++) { range.push(i); } range.push('»'); range.unshift('«'); returnrange; }
} } }); |
index.html代码:
代码如下 | 复制代码 |
|