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


相关推荐: Python3.6正式版新特性预览  phpredis提高消息队列的实时性方法(推荐)  如何自定义建站之星模板颜色并下载新样式?  中山网站推广排名,中山信息港登录入口?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何在万网开始建站?分步指南解析  Laravel集合Collection怎么用_Laravel集合常用函数详解  Python高阶函数应用_函数作为参数说明【指导】  微信小程序 scroll-view组件实现列表页实例代码  如何快速搭建支持数据库操作的智能建站平台?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  音响网站制作视频教程,隆霸音响官方网站?  linux top下的 minerd 木马清除方法  Laravel观察者模式如何使用_Laravel Model Observer配置  Python正则表达式进阶教程_复杂匹配与分组替换解析  如何在局域网内绑定自建网站域名?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  HTML 中动态设置元素 name 属性的正确语法详解  网站页面设计需要考虑到这些问题  如何快速生成ASP一键建站模板并优化安全性?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  EditPlus中的正则表达式 实战(1)  java获取注册ip实例  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何快速选择适合个人网站的云服务器配置?  BootStrap整体框架之基础布局组件  Android利用动画实现背景逐渐变暗  如何用PHP快速搭建高效网站?分步指南  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  如何在阿里云购买域名并搭建网站?  Laravel PHP版本要求一览_Laravel各版本环境要求对照  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Thinkphp 中 distinct 的用法解析  如何在云主机快速搭建网站站点?  canvas 画布在主流浏览器中的尺寸限制详细介绍  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  香港服务器租用每月最低只需15元?  Laravel如何使用Sanctum进行API认证?(SPA实战)  Laravel如何使用Vite进行前端资源打包?(配置示例)  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  浅谈redis在项目中的应用  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】