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 相关文章推荐
求得div 下 img的src地址的js代码
Feb 28 Javascript
Google Map Api和GOOGLE Search Api整合实现代码
Jul 18 Javascript
基于jquery实现的表格分页实现代码
Jun 21 Javascript
jQuery学习之prop和attr的区别示例介绍
Nov 15 Javascript
JS和函数式语言的三特性
Mar 05 Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 Javascript
js跨域请求数据的3种常用的方法
Dec 01 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
Sep 17 Javascript
JS运动特效之链式运动分析
Jan 24 Javascript
Vue 中axios配置实例详解
Jul 27 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
Oct 16 Javascript
使用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
如何利用php+mysql保存和输出文件
2006/10/09 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
在Javascript中定义对象类别
2006/12/22 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
拖动时防止选中
2017/02/03 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
python实现计算资源图标crc值的方法
2014/10/05 Python
python字符串编码识别模块chardet简单应用
2015/06/15 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
pandas重新生成索引的方法
2018/11/06 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
办公室内勤岗位职责范本
2013/12/09 职场文书
愚人节活动策划方案
2014/03/11 职场文书
2014年预算员工作总结
2014/12/05 职场文书
大学生求职简历自我评价
2015/03/02 职场文书