Angularjs 实现分页功能及示例代码


Posted in Javascript onSeptember 14, 2016

基于Angularjs实现分页

前言

       学习任何一门语言前肯定是有业务需求来驱动你去学习它,当然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>

 插件和Demo下载

http://yunpan.cn/cQEhnLrpnkniQ  访问密码 be74

以上就是AngularJS 实现分页功能的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
使用jquery为table动态添加行的实现代码
Mar 30 Javascript
jquery表格内容筛选实现思路及代码
Apr 16 Javascript
使用原生js写的一个简单slider
Apr 29 Javascript
avascript中的自执行匿名函数应用示例
Sep 15 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
Nov 25 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
Aug 20 Javascript
js数组去重的方法总结
Jan 18 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
Jan 23 Javascript
JavaScript简易计算器制作
Jan 17 Javascript
微信小程序如何实现精确的日期时间选择器
Jan 21 Javascript
JS+Canvas实现五子棋游戏
Aug 26 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 Javascript
Angularjs CURD 详解及实例代码
Sep 14 #Javascript
Angular Module声明和获取重载实例代码
Sep 14 #Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
Sep 14 #Javascript
Angular 应用技巧总结
Sep 14 #Javascript
AngularJS 所有版本下载地址
Sep 14 #Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 #Javascript
Angularjs 制作购物车功能实例代码
Sep 14 #Javascript
You might like
php中static静态变量的使用方法详解
2010/06/04 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
JS 实现获取打开一个界面中输入的值
2013/03/19 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
Python 列表list使用介绍
2014/11/30 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
使用Python发现隐藏的wifi
2020/03/04 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
基于Python实现粒子滤波效果
2020/12/01 Python
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android
volatile保证可见性及重排序方法
2022/08/05 Java/Android