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 相关文章推荐
jquery 触发a链接点击事件解决方案
May 02 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
Dec 25 Javascript
怎么判断js脚本加载完成
Feb 28 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
Dec 25 Javascript
Node.js之网络通讯模块实现浅析
Apr 01 Javascript
vue-resource 拦截器(interceptor)的使用详解
Jul 04 Javascript
JavaScript实现一个简易的计算器实例代码
May 10 Javascript
security.js实现的RSA加密功能示例
Jun 06 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
Jan 05 jQuery
使用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图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
php上传文件常见问题总结
2015/02/03 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
网页设计常用的一些技巧
2006/12/22 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
element ui 对话框el-dialog关闭事件详解
2018/02/26 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
python赋值操作方法分享
2013/03/23 Python
Python操作MongoDB详解及实例
2017/05/18 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
python实现电子词典
2020/03/03 Python
python交互模式基础知识点学习
2020/06/18 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
银行个人求职自荐信范文
2013/12/16 职场文书
大一军训感言
2014/01/09 职场文书
实践单位评语
2014/04/26 职场文书
毕业生应聘求职信
2014/07/10 职场文书
毕业设计工作总结
2015/08/14 职场文书
十个Python自动化常用操作,即拿即用
2021/05/10 Python
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android