angularjs实现的前端分页控件示例
发布时间 - 2026-01-10 22:59:05 点击率:次前言:之前写个一个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: '<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) {
//容错处理
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;
} else if (page == '»') {
page = parseInt($scope.option.curr) + 1;
}
if (page < 1) page = 1;
else if (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);
}
};
//返回页数范围(用来遍历)
function getRange(curr, all, count) {
//计算显示的页数
curr = parseInt(curr);
all = parseInt(all);
count = parseInt(count);
var from = curr - parseInt(count / 2);
var to = 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;
}
}
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分页控件</title> <script src="angular.min.js"></script> <!-- 引入angularjs文件,而且是1.x版本的 --> <script src="angular-pagination.js"></script> <!-- 引入angularjs分页控件 --> <script src="app.js"></script> <!-- 引入app.js --> </head> <body> <!-- 控制器 --> <div ng-controller="myCtrl"> <!-- 分页控件指令 ,可以是元素 或者 属性 --> <my-pagination page-option="option"></my-pagination> </div> </body> </html>
app.js代码:
//引入 'myModele' 模块
var app = angular.module('app', ['myModule']);
app.contriller('myCtrl', function($scope){
//设置分页的参数
$scope.option = {
curr: 1, //当前页数
all: 20, //总页数
count: 10, //最多显示的页数,默认为10
//点击页数的回调函数,参数page为点击的页数
click: function (page) {
console.log(page);
//这里可以写跳转到某个页面等...
}
}
});
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angularjs
# 分页控件
# angularjs分页实现
# 前端分页
# JavaScript实现前端分页控件
# Vue.js结合bootstrap实现分页控件
# 基于JS分页控件实现简单美观仿淘宝分页按钮效果
# ANGULARJS中使用JQUERY分页控件
# JS分页控件 可用于无刷新分页
# 原生JS实现分页点击控件
# 分页
# 最多
# 上了
# 遍历
# 绑定
# 回调
# 大家多多
# 跳转到
# 默认为
# 实现了
# replace
# true
# option
# scope
# function
# myPagination
# return
# EA
# restrict
# click
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速登录WAP自助建站平台?
使用C语言编写圣诞表白程序
如何做网站制作流程,*游戏网站怎么搭建?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel怎么在Controller之外的地方验证数据
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
Laravel如何使用Livewire构建动态组件?(入门代码)
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
SQL查询语句优化的实用方法总结
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
如何在云主机上快速搭建网站?
如何为不同团队 ID 动态生成多个非值班状态按钮
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Python3.6正式版新特性预览
利用vue写todolist单页应用
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel如何实现模型的全局作用域?(Global Scope示例)
微信小程序 require机制详解及实例代码
桂林网站制作公司有哪些,桂林马拉松怎么报名?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
Laravel模型事件有哪些_Laravel Model Event生命周期详解
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何快速搭建高效WAP手机网站?
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何确保FTP站点访问权限与数据传输安全?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
详解jQuery中基本的动画方法
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
太平洋网站制作公司,网络用语太平洋是什么意思?
Python面向对象测试方法_mock解析【教程】
如何在企业微信快速生成手机电脑官网?
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
敲碗10年!Mac系列传将迎来「触控与联网」双革新
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
如何在 React 中条件性地遍历数组并渲染元素
网页设计与网站制作内容,怎样注册网站?
如何有效防御Web建站篡改攻击?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
Laravel如何创建自定义Facades?(详细步骤)
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】

