angularjs實(shí)現(xiàn)的前端分頁(yè)控件示例
前言:之前寫個(gè)一個(gè)jQuery的分頁(yè)顯示插件,存在許多的bug,現(xiàn)在由于業(yè)務(wù)需要,學(xué)習(xí)的一點(diǎn)AngularJS,重新用angularjs實(shí)現(xiàn)了這個(gè)分頁(yè)插件
實(shí)現(xiàn)效果圖:
(效果圖是加上了bootstrap的css文件)

用法:
angular-pagination.js代碼:
/**
* angularjs分頁(yè)控件
* Created by CHEN on 2016/11/1.
*/
angular.module('myModule', []).directive('myPagination', function () {
return {
restrict: 'EA',
replace: true,
scope: {
option: '=pageOption'
},
template: '<ul class="pagination">' +
'<li ng-click="pageClick(p)" ng-repeat="p in page" class="{{option.curr==p?\'active\':\'\'}}">' +
'<a href="javascript:;" rel="external nofollow" >{{p}}</a>' +
'</li>' +
'</ul>',
link: function ($scope) {
//容錯(cuò)處理
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;
//得到顯示頁(yè)數(shù)的數(shù)組
$scope.page = getRange($scope.option.curr, $scope.option.all, $scope.option.count);
//綁定點(diǎn)擊事件
$scope.pageClick = function (page) {
if (page == '«') {
page = parseInt($scope.option.curr) - 1;
} else if (page == '»') {
page = parseInt($scope.option.curr) + 1;
}
if (page < 1) page = 1;
else if (page > $scope.option.all) page = $scope.option.all;
//點(diǎn)擊相同的頁(yè)數(shù) 不執(zhí)行點(diǎn)擊事件
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);
}
};
//返回頁(yè)數(shù)范圍(用來(lái)遍歷)
function getRange(curr, all, count) {
//計(jì)算顯示的頁(yè)數(shù)
curr = parseInt(curr);
all = parseInt(all);
count = parseInt(count);
var from = curr - parseInt(count / 2);
var to = curr + parseInt(count / 2) + (count % 2) - 1;
//顯示的頁(yè)數(shù)容處理
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;
}
}
var range = [];
for (var i = from; i <= to; i++) {
range.push(i);
}
range.push('»');
range.unshift('«');
return range;
}
}
}
});
index.html代碼:
<!doctype html> <html ng-app="app"> <head> <meta charset="UTF-8"> <title>Angularjs分頁(yè)控件</title> <script src="angular.min.js"></script> <!-- 引入angularjs文件,而且是1.x版本的 --> <script src="angular-pagination.js"></script> <!-- 引入angularjs分頁(yè)控件 --> <script src="app.js"></script> <!-- 引入app.js --> </head> <body> <!-- 控制器 --> <div ng-controller="myCtrl"> <!-- 分頁(yè)控件指令 ,可以是元素 或者 屬性 --> <my-pagination page-option="option"></my-pagination> </div> </body> </html>
app.js代碼:
//引入 'myModele' 模塊
var app = angular.module('app', ['myModule']);
app.contriller('myCtrl', function($scope){
//設(shè)置分頁(yè)的參數(shù)
$scope.option = {
curr: 1, //當(dāng)前頁(yè)數(shù)
all: 20, //總頁(yè)數(shù)
count: 10, //最多顯示的頁(yè)數(shù),默認(rèn)為10
//點(diǎn)擊頁(yè)數(shù)的回調(diào)函數(shù),參數(shù)page為點(diǎn)擊的頁(yè)數(shù)
click: function (page) {
console.log(page);
//這里可以寫跳轉(zhuǎn)到某個(gè)頁(yè)面等...
}
}
});
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
AngularJS實(shí)現(xiàn)根據(jù)不同條件顯示不同控件
本篇文章主要介紹了AngularJS實(shí)現(xiàn)根據(jù)不同條件顯示不同控件的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04
詳解Angular開(kāi)發(fā)中的登陸與身份驗(yàn)證
Angular是Google開(kāi)發(fā)的一款瀏覽器端的高人氣JavaScript框架,Angular 經(jīng)常會(huì)被用到后臺(tái)和管理工具的開(kāi)發(fā),這兩類都會(huì)需要對(duì)用戶進(jìn)行鑒權(quán)。而鑒權(quán)的第一步,就是進(jìn)行身份驗(yàn)證。本文詳細(xì)介紹了Angular開(kāi)發(fā)中的登陸與身份驗(yàn)證。2016-07-07
解決Angular.js中使用Swiper插件不能滑動(dòng)的問(wèn)題
下面小編就為大家分享一篇解決Angular.js中使用Swiper插件不能滑動(dòng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
@angular前端項(xiàng)目代碼優(yōu)化之構(gòu)建Api Tree的方法
這篇文章主要介紹了@angular前端項(xiàng)目代碼優(yōu)化之構(gòu)建Api Tree的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
淺談angular4 ng-content 中隱藏的內(nèi)容
本篇文章主要介紹了淺談angular4 ng-content 中隱藏的內(nèi)容,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08

