基于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 相关文章推荐
!DOCTYPE声明对JavaScript的影响分析
Apr 12 Javascript
javascript设计模式 封装和信息隐藏(上)
Jul 24 Javascript
jQuery实现防止提交按钮被双击的方法
Mar 24 Javascript
微信和qq时间格式模板实例详解
Oct 21 Javascript
ES6 Promise对象概念与用法分析
Apr 01 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
Sep 12 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
Dec 10 Javascript
Node.js assert断言原理与用法分析
Jan 04 Javascript
JavaScript中的 new 命令
May 22 Javascript
Vue.js组件实现选项卡以及切换特效
Jul 24 Javascript
VUE实现图片验证码功能
Nov 18 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
一个ftp类(ini.php)
2006/10/09 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
javascript数组去掉重复
2011/05/12 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
python动态加载变量示例分享
2014/02/17 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
一个基于flask的web应用诞生(1)
2017/04/11 Python
python 以16进制打印输出的方法
2018/07/09 Python
python之super的使用小结
2018/08/13 Python
python 二维数组90度旋转的方法
2019/01/28 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
数控技术应届生求职信
2013/11/13 职场文书
环保标语大全
2014/06/12 职场文书
2016党员入党决心书
2015/09/22 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
pandas提升计算效率的一些方法汇总
2021/05/30 Python