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学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
jquery异步跨域访问代码
Jun 28 Javascript
JavaScript中的acos()方法使用详解
Jun 14 Javascript
jQuery中设置form表单中action值的实现方法
May 25 Javascript
JavaScript中Math对象的方法介绍
Jan 05 Javascript
利用Vue v-model实现一个自定义的表单组件
Apr 27 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
微信小程序:数据存储、传值、取值详解
May 07 Javascript
js实现GIF图片的分解和合成
Oct 24 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 Javascript
JavaScript 事件捕获冒泡与捕获详情
Nov 11 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
实用函数7
2007/11/08 PHP
php获取用户IPv4或IPv6地址的代码
2012/11/15 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
php中Snoopy类用法实例
2015/06/19 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
python列表操作使用示例分享
2014/02/21 Python
python类和继承用法实例
2015/07/07 Python
python数据结构之图的实现方法
2015/07/08 Python
python读取中文txt文本的方法
2018/04/12 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
python 自动重连wifi windows的方法
2018/12/18 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
Python控制台实现交互式环境执行
2020/06/09 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
Django缓存Cache使用详解
2020/11/30 Python
Django中使用Celery的方法步骤
2020/12/07 Python
轻松掌握CSS3中的字体大小单位rem的使用方法
2016/05/24 HTML / CSS
Html5自定义字体解决方法
2019/10/09 HTML / CSS
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
中国梦口号
2014/06/13 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
毕业生政审意见范文
2015/06/04 职场文书
公司行政管理制度范本
2015/08/05 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书