angular分頁插件:angular-pager
angular分頁插件
html
<div ng-controller="PageCtrl">
{{ text }}
<observe totalitems="204" listsizes="5" itemsperpage="10"></observe>
</div>
js
ctrl.controller('PageCtrl', ['$scope', function($scope){
$scope.showPage = function(val, args){
$scope.text = args;
console.log(args)
}
$scope.$on('pagechage', $scope.showPage);
}]);
ctrl.directive('observe', function(){
return {
restrice: 'EA',
controller: function($scope, pagerConfig){
// 共多少條
$scope.totalItems = 0;
$scope.page = [];
// 偏移數
$scope.offsetPage = 0;
// 一頁多少條
$scope.itemsPerpage = 0;
// 一個多少頁
$scope.totalPages = 0;
$scope.currentPage = 0;
$scope.$watch('totalItems', function(){
$scope.totalPages = Math.ceil($scope.totalItems / $scope.itemsPerpage);
resetPageList();
if ($scope.page[$scope.currentPage]) {
$scope.page[$scope.currentPage].active = true;
}
});
var resetPageList = function(){
$scope.page = [];
var last = Math.min(Number($scope.offsetPage) + Number($scope.listSizes), $scope.totalPages);
for (var i = $scope.offsetPage; i < last; i ++) {
$scope.page.push({
text: i,
indexPage: i,
active: false
})
}
}
var getOffset = function(index){
var offset = Math.min(index, $scope.totalPages - $scope.listSizes);
if (offset <= 0) {
offset = 0;
}
return offset;
};
$scope.selectPage = function(index){
if (index < 0 || index >= $scope.totalPages) {
return;
}
if ($scope.page[$scope.currentPage-$scope.offsetPage]) {
$scope.page[$scope.currentPage-$scope.offsetPage].active = false;
}
$scope.currentPage = index;
// 如果currentPage 小于 offsetPage 或者 currentPage 大于 offsetPage加listsizes
if ($scope.currentPage < $scope.offsetPage || $scope.currentPage >= $scope.offsetPage + $scope.page.length) {
$scope.offsetPage = getOffset(index)
resetPageList();
}
if ($scope.page[$scope.currentPage-$scope.offsetPage]) {
$scope.page[$scope.currentPage-$scope.offsetPage].active = true;
}
$scope.$emit('pagechage', $scope.currentPage);
};
$scope.next = function(){
if ($scope.isLast()) {
return;
}
$scope.selectPage($scope.currentPage + 1);
};
$scope.provie = function(){
if ($scope.isFirst()) return
$scope.selectPage($scope.currentPage - 1);
}
$scope.first = function(){
$scope.selectPage(0);
}
$scope.last = function(){
$scope.selectPage($scope.totalPages - 1);
}
$scope.isFirst = function(){
return $scope.currentPage <= 0;
};
$scope.isLast = function(){
return $scope.currentPage >= $scope.totalPages - 1;
}
$scope.getText = function(key) {
return pagerConfig.text[key];
};
},
link: function(scope, ele, attrs){
scope.itemsPerpage = attrs.itemsperpage || 1;
scope.listSizes = attrs.listsizes;
attrs.$observe('totalitems', function(val){
scope.totalItems = val;
})
},
templateUrl: '../../views/modal/page.html'
}
}).constant('pagerConfig', {
text: {
'first': '首頁',
'provie': '上一頁',
'next': '下一頁',
'last': '尾頁',
}
}
); 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!