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 相关文章推荐
两种简单实现菜单高亮显示的JS类代码
Jun 27 Javascript
Fastest way to build an HTML string(拼装html字符串的最快方法)
Aug 20 Javascript
JQuery获取文本框中字符长度的代码
Sep 29 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
Dec 08 Javascript
jquery、js操作checkbox全选反选
Mar 12 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
Apr 04 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
Node.js获取前端ajax提交的request信息
Feb 20 Javascript
详释JavaScript执行环境与执行栈
Apr 02 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
Jun 18 Javascript
js实现坦克移动小游戏
Oct 28 Javascript
微信小程序服务器日期格式化问题
Jan 07 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本地服务器分享
2013/02/19 PHP
php编写简单的文章发布程序
2015/06/18 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
javascript数组排序汇总
2015/07/07 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
Python文件和流(实例讲解)
2017/09/12 Python
zookeeper python接口实例详解
2018/01/18 Python
基于Python列表解析(列表推导式)
2018/06/23 Python
PyTorch预训练的实现
2019/09/18 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
英文自荐信
2013/12/19 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
矛盾论读书笔记
2015/06/29 职场文书
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers