基本思路

一开始页码为1,Service向服务器端获取对应信息;点击上/下一页/跳转,通过对应的页码向服务器端获取对应的信息。

由于后台暂时没弄好,我实现的过程中直接读取准备好的JSON文件,通过页码获取对应的信息段并通过ng-repeat在页面显示具体信息。

展示

一开始直接在Controller中实现分页的功能代码

CSS部分

 /**
* Pagination
*/
.pagination{
margin: 40px auto 20px auto;
} .pagination ul{
width: 500px;
} .pagination-btn-group{
float: left;
margin-left: 40px;
} .pagination-btn-group:after{
display: table;
content: " ";
clear: both;
} .pagination ul li:hover,.pagination-btn-group div:hover{
cursor: pointer;
background-color: #B6B6B6;
color: #EBEBEB;
} .pagination-btn,.pagination-input,.pagination-next,.pagination-jmp,.pagination-prev{
display: block;
float: left;
height: 36px;
text-align: center;
margin-right: 8px;
border-radius: 5px;
margin-bottom: 40px;
}
.pagination-btn,.pagination-jmp{
background-color: #EBEBEB;
color: #B6B6B6;
line-height: 36px;
width: 60px;
} .pagination-input{
border-style: solid;
border-color: #B6B6B6;
border-width: 1px;
width: 60px;
} .pagination-next,.pagination-prev{
width: 80px;
background-color: #EBEBEB;
color: #B6B6B6;
line-height: 36px;
} .active{
background-color: #B6B6B6;
color: #EBEBEB;
} .disabled{
display: none;
}
/*end of pagination*/

HTML部分

 <div class="pagination">
<ul>
<li class="pagination-btn" ng-class="{true:'active'}[currentPage == page]" ng-repeat="page in pages" ng-click="selectPage(page)">
{{page}}
</li>
<input class="pagination-input" ng-model="destPage">
<li class="pagination-jmp" ng-click="skipPage()">跳转</li>
</ul>
<div class="pagination-btn-group">
<div class="pagination-prev" ng-click="prevPage()" ng-class="{true:'disabled'}[currentPage == 1]">&lt;上一页</div>
<div class="pagination-next" ng-click="nextPage()" ng-class="{true:'disabled'}[currentPage == endPage]">下一页&gt;</div>
</div>
</div>

ng-class="{true:'active'}[currentPage == page]" 表示当page为当前页面时应用.active的CSS样式

在angular中为我们提供了3种方案处理class:

1.scope变量绑定

  如:<div class=”{{test}}”></div> 然后在Controller中设置$scope.test值,不推荐使用,Controller中应该放业务逻辑部分,Service与服务器交互,Directive与页面交互

2.字符串数组形式

  形如:<div ng-class="{true: 'active', false: 'inactive'}[expression]"> expression为true,则active;否则inactive

3.对象key/value处理

  形如:<div ng-class {'selected': isSelected, 'car': isCar}"> isSelected为true,增加.selected样式;isCar为true,增加car样式

功能部分

 $scope.loadPagination = function() {
$scope.pages = [];
var i,j; if($scope.currentPage == "1..."){
$scope.currentPage = 1;
}else if($scope.currentPage == "..." + $scope.endPage){
$scope.currentPage = $scope.endPage;
} if(($scope.endPage <= 5) || ($scope.currentPage <= 3)){
$scope.pages[0] = 1;
for(i = 1;i < 5;i++){
if(i == $scope.endPage)
break;
$scope.pages[i] = i + 1;
}
if(i < $scope.endPage){
$scope.pages[4] = "..." + $scope.endPage;
}
}else if($scope.currentPage <= $scope.endPage-3){
$scope.pages[0] = "1...";
$scope.pages[1] = $scope.currentPage - 1;
$scope.pages[2] = $scope.currentPage;
$scope.pages[3] = $scope.currentPage + 1;
$scope.pages[4] = "..." + $scope.endPage;
}else{
$scope.pages[0] = "1...";
$scope.pages[1] = $scope.endPage - 3;
$scope.pages[2] = $scope.endPage - 2;
$scope.pages[3] = $scope.endPage - 1;
$scope.pages[4] = $scope.endPage;
} var start=($scope.currentPage - 1) * $scope.pageSize;
var end=$scope.currentPage * $scope.pageSize;
$scope.dialogList = $scope.realDialogList.slice(start,end);
}; $scope.prevPage = function() {
$scope.currentPage -= 1;
$scope.loadPagination();
}; $scope.nextPage = function() {
$scope.currentPage += 1;
$scope.loadPagination();
}; $scope.skipPage = function() {
var destPage=Number($scope.destPage);
$scope.destPage = "";
if(isNaN(destPage) || destPage <= 0 || destPage > $scope.endPage){
return ;
}
$scope.currentPage = destPage;
$scope.loadPagination();
}; $scope.selectPage = function(selected) {
$scope.currentPage=selected;
$scope.loadPagination();
};

$scope.realDialogList为Service获取的JSON信息,$scope.dialogList为要展示在页面上的信息

这里关键就是loadPagination(),我的思路是设置5个按钮的分页,第一个按钮作为首页链接,最后一个按钮作为末页链接,剩下三个按钮,将当前页码设置为中间按钮 。

根据分页栏首/末页按钮数字分为三种状态:

  1. 首页为'1',此时 页码<=3 或 末页<=5,当末页>5时,设置为'...X'

  2. 首页为'1...',末页为'...X',此时 页码<=末页-3

  3. 首页位'1...',末页为‘X',其他情况

代码:http://pan.baidu.com/s/1hqEZi0s

推荐将分页写成Directive

AngularJS分页实现的更多相关文章

  1. 自定义angularjs分页控件

    继昨天写了knockoutjs+ jquery pagination+asp.net web Api 实现无刷新列表页 ,正好最近刚学习angularjs ,故琢磨着写一个angularjs版本的分页 ...

  2. AngularJS 分页

    前端源码: <div> <h1>列表页33</h1> <table> <thead> <tr><td>CandiID ...

  3. angularjs 分页精华代码

    //pageinfo $scope.pageSize=10;$scope.currentType={{ current_type }};$scope.currentPage={{ json_encod ...

  4. Angularjs 分页控件

    实现效果: 实现步骤: 1.分页页面:page.html,页面多余样式,需要自己去除. <div class="row" ng-show="conf.totalIt ...

  5. angularjs分页组件

    这是我第一次写博客,激动,首先,我也是个菜鸟,分享一下自己写的服务器端分页的代码,自己一步一步写的,其中也有参考别人的代码.技术比较渣,先这样了. // ====== 2019-1-3 ======/ ...

  6. 前端使用AngularJS的$resource,后端ASP.NET Web API,实现分页、过滤

    在上一篇中实现了增删改查,本篇实现分页和过滤. 本系列包括: 1.前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查2.前端使用AngularJS的$re ...

  7. Angularjs 跳转页面并传递参数的方法总结

    http://www.zhihu.com/question/33565135 http://www.codeproject.com/Articles/1073780/ASP-NET-MVC-CRUD- ...

  8. angular.js分页代码的实例

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

  9. 有了jsRender,妈妈再也不用担心我用jq拼接DOM拼接的一团糟了、页面整齐了、其他伙伴读代码也不那么费劲了

    写在前面 说来也很巧, 下午再做一个页面,再普通不过的分页列表,我还是像往常一样,基于MVC环境下,我正常用PagedList.MVC AJAX做无刷新分页,这时候问题就来了,列表数据中有个轮播图用到 ...

随机推荐

  1. 创建本地yum源及grouplist 出错

    RHEL有时候使用自定义的YUM源是很方便的事情. yum install createrepo createrepo /your/repo/directory/ 不过由于粗心,本人在使用时遇到很郁闷 ...

  2. POJ 3150 Cellular Automaton(矩阵乘法+二分)

    题目链接 题意 : 给出n个数形成环形,一次转化就是将每一个数前后的d个数字的和对m取余,然后作为这个数,问进行k次转化后,数组变成什么. 思路 :下述来自here 首先来看一下Sample里的第一组 ...

  3. SharePoint文档库文件大小限制(win2008+II7)问题

    我们在用SharePoint存储文档时,用户要上传五十多MB到站点上,结果受到上传大小限制.在管理中心里做了修改,增加了上载大小限制.可是用户在上传的时候,提示复制一个或多个文件失败(win2003) ...

  4. Linux网络编程8——对TCP与UDP的简易封装

    引言 每次使用socket通信,都会有很对相似的操作.本文,会对TCP与UDP通信做一简单封装,并生成动态库. 代码 my_socket.h #ifndef __MY_SOCKET_H__ #defi ...

  5. 十佳AngularJS框架

    您是否还在烦恼如何没有困难地创建一个创新型的Web应用程序?那么一定不要错过这个集合!在本文中,小编为大家收集了十个非常棒的AngularJS框架.AngularJS框架拥有大量有用的工具和组件,可以 ...

  6. linq lambda 分组后排序

    1.lamdba分组排序foodBusinessDistrict.                        GroupBy(x => new                        ...

  7. JavaWeb项目开发案例精粹-第6章报价管理系统-07View层

    1. 2.back_index.html <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT= ...

  8. Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)

    一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...

  9. Highcharts axja 获取json对象动态生成报表生成

    最近做个项目,项目经理想做一个统计报表,在网上查看些资料就选用Highchars 这里和大家分享下使用心得. 重点说明此代码是针对一个报表显示多个项对比显示. 直接贴代码:web端 <scrip ...

  10. Spark 1.6.1分布式集群环境搭建

    一.软件准备 scala-2.11.8.tgz spark-1.6.1-bin-hadoop2.6.tgz 二.Scala 安装 1.master 机器 (1)下载 scala-2.11.8.tgz, ...