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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
js 获取服务器控件值的代码
Mar 05 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
return false;和e.preventDefault();的区别
Jul 11 Javascript
JavaScript 原型学习总结
Oct 29 Javascript
javascript获取xml节点的最大值(实现代码)
Dec 11 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
Sep 01 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
Aug 03 Javascript
Vue 拦截器对token过期处理方法
Jan 23 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
vue 监听 Treeselect 选择项的改变操作
Aug 31 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
2017/03/13 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
JavaScript的Cookies
2008/01/16 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
jQuery的三种$()
2009/12/30 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
Python获取文件所在目录和文件名的方法
2017/01/12 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
德国户外商店:eXXpozed
2020/07/25 全球购物
毕业生自荐信
2013/12/14 职场文书
竞职演讲稿范文
2014/01/11 职场文书
考试不及格的检讨书
2014/01/22 职场文书
30年同学聚会感言
2014/01/30 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
525心理健康活动总结
2015/05/08 职场文书
MYSQL 运算符总结
2021/11/11 MySQL
讨论nginx location 顺序问题
2022/05/30 Servers