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 相关文章推荐
javascript 关于# 和 void的区别分析
Oct 26 Javascript
JavaScript模板入门介绍
Sep 26 Javascript
extjs3 combobox取value和text案例详解
Feb 06 Javascript
javascript用户注册提示效果的简单实例
Aug 17 Javascript
常用的jquery模板插件——jQuery Boilerplate介绍
Sep 23 Javascript
高效的jquery数字滚动特效
Dec 17 Javascript
JavaScript笔记之数据属性和存储器属性
Mar 31 Javascript
JavaScript 对象字面量讲解
Jun 06 Javascript
小程序云开发之用户注册登录
May 18 Javascript
vue 取出v-for循环中的index值实例
Nov 09 Javascript
JS window对象简单操作完整示例
Jan 14 Javascript
Vue绑定用户接口实现代码示例
Nov 04 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
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
JavaScript对象学习小结
2015/09/02 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
vue组件与复用详解
2018/04/08 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
Python中操作符重载用法分析
2016/04/29 Python
Python数据集切分实例
2018/12/08 Python
python实现简单图片物体标注工具
2019/03/18 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
教师自荐信
2013/12/10 职场文书
车间操作工岗位职责
2013/12/19 职场文书
工作岗位说明书模板
2014/05/09 职场文书
教师节标语大全
2014/10/07 职场文书
信访工作汇报材料
2014/10/27 职场文书
党建工作整改措施
2014/10/28 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书
2016入党心得体会范文
2016/01/06 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书