Angularjs实现分页和分页算法的示例代码

发布时间 - 2026-01-10 22:03:34    点击率:

对于大多数web应用来说显示项目列表是一种很常见的任务。通常情况下,我们的数据会比较多,无法很好地显示在单个页面中。在这种情况下,我们需要把数据以页的方式来展示。

页面展示效果:

页面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; 
}; 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# angularjs  # 分页  # angularjs实现分页  # 分页实例  # AngularJS 与Bootstrap实现表格分页实例代码  # Angularjs 实现分页功能及示例代码  # AngularJS实现分页显示数据库信息  # 学习Angularjs分页指令  # 基于Angularjs实现分页功能  # AngularJs实现分页功能不带省略号的代码  # angularjs表格分页功能详解  # ANGULARJS中使用JQUERY分页控件  # 尾页  # 加载  # 首页  # 我是  # 很好  # 是一种  # 较多  # 会比  # 在这种情况下  # 第一页  # 大家多多  # 单选  # 情况下  # address  # paging  # status_str  # radio  # type  # id 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Java垃圾回收器的方法和原理总结  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Windows Hello人脸识别突然无法使用  简单实现Android验证码  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Swift中循环语句中的转移语句 break 和 continue  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Python结构化数据采集_字段抽取解析【教程】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  网站建设保证美观性,需要考虑的几点问题!  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel如何使用Collections进行数据处理?(实用方法示例)  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  EditPlus 正则表达式 实战(3)  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  C++时间戳转换成日期时间的步骤和示例代码  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  JS弹性运动实现方法分析  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  php打包exe后无法访问网络共享_共享权限设置方法【教程】  如何在 React 中条件性地遍历数组并渲染元素  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel如何使用.env文件管理环境变量?(最佳实践)  网站图片在线制作软件,怎么在图片上做链接?  如何快速搭建FTP站点实现文件共享?  个人网站制作流程图片大全,个人网站如何注销?  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  深圳网站制作平台,深圳市做网站好的公司有哪些?  Android使用GridView实现日历的简单功能  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  香港服务器WordPress建站指南:SEO优化与高效部署策略  javascript如何操作浏览器历史记录_怎样实现无刷新导航