基于Angularjs实现分页功能


Posted in Javascript onMay 30, 2016

前言

学习任何一门语言前肯定是有业务需求来驱动你去学习它,当然ng也不例外,在学习ng前我第一个想做的demo就是基于ng实现分页,除去基本的计算思路外就是使用指令封装成一个插件,在需要分页的列表页面内直接引用。

插件

在封装分页插件时我实现了几种方式总体都比较零散,最后找到了一个朋友(http://www.miaoyueyue.com/archives/813.html)封装的插件,觉还不错,读了下他的源码就直接在项目中使用了。

原理和使用说明

1、插件源码主要基于angular directive来实现。

2、调用时关键地方是后台请求处理函数,也就是从后台取数据。

3、插件有两个关键参数currentPage、itemsPerPage,当前页码和每页的记录数。

4、实现方法调用后我们需要根据每次点击分页插件页码时重新提交后台来获取相应页码数据。 在调用的页码中我使用了$watch来监控。 我初次使用时是把调用函数放在了插件的onchange中,结果发现每次都会触发两次后台。这个地方需要注意。

5、我把请求后台封装成了Service层,然后在Controller里调用,也符合MVC思想。

效果图

基于Angularjs实现分页功能

调用代码

<div ng-app="DemoApp" ng-controller="DemoController">
<table class="table table-striped">
<thead>
<tr>
<td>ID</td>
<td>FirstName</td>
<td>LastName</td>
<td>Status</td>
<td>Address</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="emp in persons">
<td>{{emp.ID}}</td>
<td>{{emp.FirstName}}</td>
<td>{{emp.LastName}}</td>
<td>{{emp.Status}}</td>
<td>{{emp.Address}}</td>
</tr>
</tbody>
</table>
<tm-pagination conf="paginationConf"></tm-pagination>
</div>
<script type="text/javascript">
var app = angular.module('DemoApp', ['tm.pagination']);
app.controller('DemoController', ['$scope', 'BusinessService', function ($scope, BusinessService) {
var GetAllEmployee = function () {
var postData = {
pageIndex: $scope.paginationConf.currentPage,
pageSize: $scope.paginationConf.itemsPerPage
}
BusinessService.list(postData).success(function (response) {
$scope.paginationConf.totalItems = response.count;
$scope.persons = response.items;
});
}
//配置分页基本参数
$scope.paginationConf = {
currentPage: 1,
itemsPerPage: 5
};
/***************************************************************
当页码和页面记录数发生变化时监控后台查询
如果把currentPage和itemsPerPage分开监控的话则会触发两次后台事件。
***************************************************************/
$scope.$watch('paginationConf.currentPage + paginationConf.itemsPerPage', GetAllEmployee);
}]);
//业务类
app.factory('BusinessService', ['$http', function ($http) {
var list = function (postData) {
return $http.post('/Employee/GetAllEmployee', postData);
}
return {
list: function (postData) {
return list(postData);
}
}
}]);
</script>

以上内容是小编给大家介绍的基于Angularjs实现分页功能的实例代码,希望对大家有所帮助!

Javascript 相关文章推荐
javascript简易缓动插件(源码打包)
Feb 16 Javascript
javascript学习笔记(八) js内置对象
Jun 19 Javascript
js返回前一页刷新本页重载页面
Jul 29 Javascript
Position属性之relative用法
Dec 14 Javascript
JS插件overlib用法实例详解
Dec 26 Javascript
JS中生成随机数的用法及相关函数
Jan 09 Javascript
微信小程序商城项目之购物数量加减(3)
Apr 17 Javascript
详解vuejs几种不同组件(页面)间传值的方式
Jun 01 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
Dec 09 Javascript
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
vue实现商品列表的添加删除实例讲解
May 14 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 #Javascript
JS组件Bootstrap Select2使用方法解析
May 30 #Javascript
AngularJs表单验证实例详解
May 30 #Javascript
基于Bootstrap+jQuery.validate实现表单验证
May 30 #Javascript
jquery获取form表单input元素值的简单实例
May 30 #Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 #Javascript
使用JQuery 加载页面时调用JS的实现方法
May 30 #Javascript
You might like
BBS(php &amp; mysql)完整版(八)
2006/10/09 PHP
PHP中MVC模式的模板引擎开发经验分享
2011/03/23 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
关于jquery动态增减控件的一些想法和小插件
2010/08/01 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
SVG实现时钟效果
2018/07/17 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python中返回字典键的值的values()方法使用
2015/05/22 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
python3中eval函数用法使用简介
2019/08/02 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
网站域名和主机:Domain.com
2019/04/01 全球购物
办公室秘书自我鉴定
2014/01/18 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL