Angularjs实现分页和分页算法的示例代码


Posted in Javascript onDecember 23, 2016

对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示。

页面展示效果:

Angularjs实现分页和分页算法的示例代码

页面HTML代码:

<table class="table table-striped" style="margin: 0px;"> 
   <thead> 
    <tr> 
      <td>选择</td> 
      <td>企业名称</td>                
      <td>企业地址</td> 
      <td>状态</td> 
    </tr> 
  </thead> 
  <tbody> 
    <tr ng-repeat="l in list"> 
      <td><input type="radio" name="id" ng-click="select(l.id)" value="{{l.id}}" /></td> 
      <td>{{l.name}}</td> 
      <td>{{l.address}}</td> 
      <td>{{l.status_str}}</td> 
    </tr> 
  </tbody> 
</table> 
<!-- paging --> 
<ul class="pagination" style="margin: 0px;" > 
    <li ng-class="{true:'disabled'}[p_current==1]"><a href="javascript:void(0);" ng-click="p_index()">首页</a></li> 
    <li ng-repeat="page in pages" ng-class="{true:'active'}[p_current==page]"><a href="javascript:void(0);" ng-click="load_page(page)">{{ page }}</a></li> 
    <li ng-class="{true:'disabled'}[p_current==p_all_page]"><a href="javascript:void(0);" ng-click="p_last()">尾页</a></li> 
</ul> 
<span style="vertical-align: 12px;"> 共:{{count}} 条</span>

Js代码:

var app = angular.module("myApp",[]);   
app.controller("map_ctrl",function($scope,$http,$location){ 
  //配置 
  $scope.count = 0; 
  $scope.p_pernum = 10; 
  //变量 
  $scope.p_current = 1; 
  $scope.p_all_page =0; 
  $scope.pages = []; 
  //初始化第一页 
  _get($scope.p_current,$scope.p_pernum,function(){ 
    alert("我是第一次加载"); 
  }); 
  //获取数据 
  var _get = function(page,size,callback){ 
    $http.get("xxx.html?status=0&page="+page+"&size="+size).success(function(res){ 
      if(res&&res.status==1){ 
        $scope.count=res.count; 
        $scope.list=res.list; 
        $scope.p_current = page; 
        $scope.p_all_page =Math.ceil($scope.count/$scope.p_pernum); 
        reloadPno(); 
        callback(); 
      }else{ 
        alert("加载失败"); 
      } 
    });  
  } 
  //单选按钮选中 
  $scope.select= function(id){ 
    alert(id); 
  } 
  //首页 
  $scope.p_index = function(){ 
    $scope.load_page(1); 
  } 
  //尾页 
  $scope.p_last = function(){ 
    $scope.load_page($scope.p_all_page); 
  } 
  //加载某一页 
  $scope.load_page = function(page){ 
    _get(page,$scope.p_pernum,function(){ }); 
  }; 
  //初始化页码 
  var reloadPno = function(){ 
     $scope.pages=calculateIndexes($scope.p_current,$scope.p_all_page,8); 
    }; 
//分页算法 
var calculateIndexes = function (current, length, displayLength) { 
  var indexes = []; 
  var start = Math.round(current - displayLength / 2); 
  var end = Math.round(current + displayLength / 2); 
  if (start <= 1) { 
    start = 1; 
    end = start + displayLength - 1; 
    if (end >= length - 1) { 
      end = length - 1; 
    } 
  } 
  if (end >= length - 1) { 
    end = length; 
    start = end - displayLength + 1; 
    if (start <= 1) { 
      start = 1; 
    } 
  } 
  for (var i = start; i <= end; i++) { 
    indexes.push(i); 
  } 
  return indexes; 
 }; 
  
});

分页算法:

current :当前页码,length:总页码,displayLength:显示长度      @return  array[1,2,3,4,5,6,7,8]     

var calculateIndexes = function (current, length, displayLength) { 
  var indexes = []; 
  var start = Math.round(current - displayLength / 2); 
  var end = Math.round(current + displayLength / 2); 
  if (start <= 1) { 
    start = 1; 
    end = start + displayLength - 1; 
    if (end >= length - 1) { 
      end = length - 1; 
    } 
  } 
  if (end >= length - 1) { 
    end = length ; 
    start = end - displayLength + 1; 
    if (start <= 1) { 
      start = 1; 
    } 
  } 
  for (var i = start; i <= end; i++) { 
    indexes.push(i); 
  } 
  return indexes; 
};

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
滚动经典最新话题[prototype框架]下编写
Oct 03 Javascript
jQuery中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
javascript函数中参数传递问题示例探讨
Jul 31 Javascript
JS实现的打字机效果完整实例
Jun 20 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
微信小程序使用第三方库Immutable.js实例详解
Sep 27 Javascript
javascript ES6中箭头函数注意细节小结
Feb 17 Javascript
Webpack实战加载SVG的方法
Dec 26 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
vue 实现一个简单的全局调用弹窗案例
Sep 10 Javascript
vue中template的三种写法示例
Oct 21 Javascript
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
使用Bootstrap Tabs选项卡Ajax加载数据实现
Dec 23 #Javascript
ionic开发中点击input时键盘自动弹出
Dec 23 #Javascript
JS敏感词过滤代码
Dec 23 #Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 #Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 #Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
Dec 23 #Javascript
Bootstrap和Java分页实例第一篇
Dec 23 #Javascript
You might like
CI框架安全类Security.php源码分析
2014/11/04 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
javascript YUI 读码日记之 YAHOO.util.Dom - Part.4
2008/03/22 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
python实现统计代码行数的小工具
2019/09/19 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
德国亚洲食品网上商店:asiafoodland.de
2019/12/28 全球购物
三年级科学教学反思
2014/01/29 职场文书
会计工作决心书
2014/03/11 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript
JAVA springCloud项目搭建流程
2022/05/11 Java/Android