前台搜索结果分页(Angular,Solr)

管理后台的分页使用的是分页控件。对于后台其实无所谓,他那个分页控件做得好看还是丑啊,对于用户来说并不会很重要,因为他是放到后台的。但是如果说你要放到前台的话,我们还是要讲究一下整个页面的美感。这个时候肯定是要自己来实现分页。因为之前使用的分页控件,它的样式是很难改变的,因为它是封装好的。

1.后端

前端需要向后端传递当前页码(pageNo)和当前页的记录数(pageSize)。

Integer pageNo = (Integer) searchMap.get("pageNo");// 获取当前页码
if (pageNo == null) {
	pageNo = 1;
}
Integer pageSize = (Integer) searchMap.get("pageSize");// 一页的记录数
if (pageSize == null) {
	pageSize = 20;
}
// 设置每页的起始索引
query.setOffset((pageNo - 1) * pageSize);
// 设置每页的记录数
query.setRows(pageSize);

2.前端

一次只显示5页。以中间的页码为当前页向两边加2和减2
定义两个变量:
  开始页码
  最后页码
如果总页数<5
  显示全部页码
如果总页数<5
  如果当前页<=3
    显示前5页
    最后页码=5;
  如果当前页>=总页数-2
    显示后5页
    开始页码=总页数-4;
  否则
    显示中间5页,以当前页为中间进行加2和减2
    开始页码=当前页-2;
    最后页码=当前页+2;

// 构建分页栏
buildPageLabel = function() {
	// 构建分页栏
	$scope.pageLabel = [];
	// 定义开始页码
	var firstPage = 1;
	// 定义最后页码
	var lastPage = $scope.resultMap.totalPages;
	
	if ($scope.resultMap.totalPages > 5) {
		if ($scope.searchMap.pageNo <= 3) {
			lastPage = 5;
		} else if ($scope.searchMap.pageNo >= $scope.resultMap.totalPages - 2) {
			firstPage = $scope.resultMap.totalPages - 4;
		} else {
			firstPage = $scope.searchMap.pageNo - 2;
			lastPage = $scope.searchMap.pageNo + 2;
		}
	}

	for (var i = firstPage; i <= lastPage; i++) {
		$scope.pageLabel.push(i);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值