基于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之appendChild、insertBefore和insertAfter使用说明
Dec 30 Javascript
原生js ActiveXObject获取execl里面的值
Nov 01 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
Oct 14 Javascript
常用的 JS 排序算法 整理版
Apr 05 Javascript
Vue动态加载异步组件的方法
Nov 21 Javascript
创建Vue项目以及引入Iview的方法示例
Dec 03 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
Jan 14 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
Jan 24 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
Oct 09 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
May 14 Javascript
如何管理Vue中的缓存页面
Feb 06 Vue.js
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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
基于JavaScript实现继承机制之原型链(prototype chaining)的详解
2013/05/07 Javascript
Jquery焦点与失去焦点示例应用
2014/06/10 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
Python实现的视频播放器功能完整示例
2018/02/01 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python里dict变成list实例方法
2019/06/26 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
python 模拟创建seafile 目录操作示例
2019/09/26 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
Python 实现平台类游戏添加跳跃功能
2020/03/27 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
公务员培训心得体会
2013/12/28 职场文书
心理咨询承诺书
2014/05/20 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
清洁工个人工作总结
2015/03/05 职场文书