angular分页

2.3.1构建分页标签

需求:

(1)如果我们需要修改默认页码和每页记录数,可以修改searchController.js的searchMap,为搜索对象添加属性。

$scope.searchMap={'keywords':'','category':'','brand':'','spec':{},'price':'',

'pageNo':1,'pageSize':40 };//搜索条件封装对象

(2)修改searchController.js 实现页码的构建

//构建分页标签(totalPages为总页数)

buildPageLabel=function(){

$scope.pageLabel=[];//新增分页栏属性

var maxPageNo= $scope.resultMap.totalPages;//得到最后页码

var firstPage=1;//开始页码

var lastPage=maxPageNo;//截止页码

if($scope.resultMap.totalPages> 5){  //如果总页数大于5页,显示部分页码

if($scope.searchMap.pageNo<=3){//如果当前页小于等于3

lastPage=5; //前5页

}else if( $scope.searchMap.pageNo>=lastPage-2  ){//如果当前页大于等于最大页码-2

firstPage= maxPageNo-4;  //后5页

}else{ //显示当前页为中心的5页

firstPage=$scope.searchMap.pageNo-2;

lastPage=$scope.searchMap.pageNo+2;

}

}

//循环产生页码标签

for(var i=firstPage;i<=lastPage;i++){

$scope.pageLabel.push(i);

}

}

(3)在查询后调用此方法

//搜索

$scope.search=function(){

searchService.search( $scope.searchMap ).success(

function(response){

$scope.resultMap=response;//搜索返回的结果

buildPageLabel();//调用

}

);

}

(4)修改search.html, 循环产生页码

<ul>

<li class="prev disabled">

<a href="#">«上一页</a>

</li>

<li ng-repeat="p in pageLabel">

<a href="#" >{{p}}</a>

</li>

<li class="next">

<a href="#">下一页»</a>

</li>

</ul>

<div>

<span> 共{{resultMap.totalPages}}页 </span>

.......

</div>

(5)显示总条数

搜索结果:{{resultMap.total}}条记录

2.3.2提交页码查询

(1)在searchController.js增加方法,修改页码执行查询

//根据页码查询

$scope.queryByPage=function(pageNo){

//页码验证

if(pageNo<1 || pageNo>$scope.resultMap.totalPages){

return;

}

$scope.searchMap.pageNo=pageNo;

$scope.search();

}

(2)修改页码调用方法

<div class="sui-pagination pagination-large">

<ul>

<li class="prev">

<a href="#" ng-click="queryByPage(searchMap.pageNo-1)">«</a>

</li>

<li ng-repeat="p in pageLabel">

<a href="#" ng-click="queryByPage(p)">{{p}}</a>

</li>

<li class="next">

<a href="#" ng-click="queryByPage(searchMap.pageNo+1)">»</a>

</li>

</ul>

<div>

<span> 共{{resultMap.totalPages}}页 </span>

<span>  到第 <input type="text" class="page-num" ng-model="searchMap.pageNo">

    <button class="page-confirm"  ng-click="queryByPage(searchMap.pageNo)" >确定</button></span>

 </div>

</div>

(3)修改search方法, 在执行查询前,转换为int类型,否则提交到后端有可能变成字符串

//搜索

$scope.search=function(){

$scope.searchMap.pageNo= parseInt($scope.searchMap.pageNo) ;

.......

}

2.3.3显示省略号

//构建分页栏

buildPageLabel=function(){

//构建分页栏

$scope.pageLabel=[];

var firstPage=1;//开始页码

var lastPage=$scope.resultMap.totalPages;//截止页码

$scope.firstDot=true;//前面有点

$scope.lastDot=true;//后边有点

if($scope.resultMap.totalPages>5){  //如果页码数量大于5

if($scope.searchMap.pageNo<=3){//如果当前页码小于等于3 ,显示前5页

lastPage=5;

$scope.firstDot=false;//前面没点

}else if( $scope.searchMap.pageNo>= $scope.resultMap.totalPages-2 ){//显示后5页

firstPage=$scope.resultMap.totalPages-4;

$scope.lastDot=false;//后边没点

}else{  //显示以当前页为中心的5页

firstPage=$scope.searchMap.pageNo-2;

lastPage=$scope.searchMap.pageNo+2;

}

}else{

$scope.firstDot=false;//前面无点

$scope.lastDot=false;//后边无点

}

//构建页码

for(var i=firstPage;i<=lastPage;i++){

$scope.pageLabel.push(i);

}

}

修改页面 :页码前的省略号

<li class="dotted" ng-if="firstDot==true"><span>...</span></li>

页码后的省略号

<li class="dotted" ng-if="lastDot==true"><span>...</span></li>

 

2.3.4页码不可用样式

修改searchController.js增加方法

//判断当前页为第一页

$scope.isTopPage=function(){

if($scope.searchMap.pageNo==1){

return true;

}else{

return false;

}

}

 

//判断当前页是否未最后一页

$scope.isEndPage=function(){

if($scope.searchMap.pageNo==$scope.resultMap.totalPages){

return true;

}else{

return false;

}

}

  1. 修改页面

<ul>

<li class="prev {{isTopPage()?'disabled':''}}">

<a href="#" ng-click="queryByPage(searchMap.pageNo-1)">«上一页</a>

</li>

<li ng-repeat="p in resultMap.pageLabel">

<a href="#" ng-click="queryByPage(p)">{{p}}</a>

</li>

<li class="dotted"><span>...</span></li>

<li class="next {{isEndPage()?'disabled':''}}">

<a href="#" ng-click="queryByPage(searchMap.pageNo+1)">下一页»</a>

</li>

</ul>

2.3.5搜索起始页码处理

测试:如果我们先按照“手机”关键字进行搜索,得出的页数是19页,然后我们点击第18页进行查询,然后我们再根据“三星”关键字搜索,会发现没有结果显示。是因为当前页仍然为18,而三星的结果只有4页,所以无法显示。我们需要在每次点击查询时将页码设置为1 。

修改搜索按钮,调用搜索前将起始页码设置为1

<button class="sui-btn btn-xlarge btn-danger" ng-click="searchMap.pageNo=1;search()" type="button">搜索</button>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值