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处理VBArray的函数使用说明
May 11 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
两种常用的javascript数组去重方法思路及代码
Mar 26 Javascript
没有document.getElementByName方法
Aug 19 Javascript
jquery判断元素是否隐藏的多种方法
May 06 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
详细分析JavaScript变量类型
Jul 08 Javascript
JS修改地址栏参数实例代码
Jun 14 Javascript
在Vue项目中使用d3.js的实例代码
May 01 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
Jun 11 Javascript
微信小程序手动添加收货地址省市区联动
May 18 Javascript
通过实例解析js可枚举属性与不可枚举属性
Dec 02 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中的string类型使用说明
2010/07/27 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
jQuery写fadeTo示例代码
2014/02/21 Javascript
详解JavaScript中的Unescape()和String() 函数
2015/11/09 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
pandas object格式转float64格式的方法
2018/04/10 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
Django中modelform组件实例用法总结
2020/02/10 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
最新的互联网创业计划书
2014/01/10 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
安全保证书范文
2014/04/29 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
教师见习报告范文
2014/11/03 职场文书
2014年学习部工作总结
2014/11/12 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书