基于AngularJs的分页控件

1、图片效果

这里写图片描述

这里写图片描述

这里写图片描述
2、思想

基本思想:
1、页码数字的流动效果
通过个增量increment确立三种状态,1)1~3前三个页面在前三个位置;2)当前页面一直位于最中央;3)(allNumber-3)~allNumber既最后三页,在后3个对应位置。(如上图)
2、当前页面的标注
通过increment的值确立标注,而increment仅由count(当前页面)推算而来

3、使用方法:
count:当前页面的值。
allNumber:页面总值,默认是20。
4、代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>AngularJs分页</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script>
    <style>
    .beSelected{
        color:white;
        background-color:#87CEFA;
    };
    .noSelected{
        color:black;
        background-color: white;
    }
    .btnPage{
        width:50px;
    } 
    </style>
  </head>
  <body>
    <!-- 分页控件 -->
    <div ng-app="myApp" ng-controller="myCtrl">
        <!-- 分页展示内容 -->
        <div style="width:400px;height:400px;">这里是分页展示内容</div>
        <!-- 分页按钮 -->
        <div>
            <button ng-click="changePage(-10)">首页</button>
            <button ng-click="changePage(-9)">上一页</button>
            <button class="btnPage" ng-class="{true:'beSelected', false:'noSelected'}[isActive1]" ng-click="changePage(-3)">{{count+increment-3}}</button>
            <button class="btnPage" ng-class="{true:'beSelected', false:'noSelected'}[isActive2]" ng-click="changePage(-2)">{{count+increment-2}}</button>
            <button class="btnPage" ng-class="{true:'beSelected', false:'noSelected'}[isActive3]" ng-click="changePage(-1)">{{count+increment-1}}</button>
            <button class="btnPage" ng-class="{true:'beSelected', false:'noSelected'}[isActive4]" ng-click="changePage(0)">{{count+increment}}</button>
            <button class="btnPage" ng-class="{true:'beSelected', false:'noSelected'}[isActive5]" ng-click="changePage(1)">{{count+increment+1}}</button>
            <button class="btnPage" ng-class="{true:'beSelected', false:'noSelected'}[isActive6]" ng-click="changePage(2)">{{count+increment+2}}</button>
            <button class="btnPage" ng-class="{true:'beSelected', false:'noSelected'}[isActive7]" ng-click="changePage(3)">{{count+increment+3}}</button>
            <button ng-click="changePage(9)">下一页</button>
            <button ng-click="changePage(10)">尾页</button>
        </div>
    </div>
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
    $scope.count = 1;      //起始页数
    $scope.allNumber=20;   //页码总数
    $scope.increment=3;
    $scope.style_1="colorObj";
    $scope.isActive1=true;
    //触发页码显示,这个时候可以向前台请求数据
    $scope.changePage = function(number) {
        //首页
        if(number==-10)
        {
            $scope.count = 1;
        }
        //尾页
        else if(number==10)
        {
            $scope.count = $scope.allNumber;
        }
        else if(number==-9)
        {
            if($scope.count!=1)
            {
                $scope.count=$scope.count-1;
            }
        }
        else if(number==9)
        {
            if($scope.count!=$scope.allNumber)
            {
                $scope.count=$scope.count+1;
            }
        }
        else
        {
            $scope.count=$scope.count+$scope.increment+number;
        }
        //根据count值判断增量,focus相应位置
        if($scope.count<4)
        {
            $scope.increment=4-$scope.count;
        }
        else if($scope.count>$scope.allNumber-3)
        {
            $scope.increment=($scope.allNumber-3)-$scope.count;
        }
        else
        {
            $scope.increment=0;
        }
        //增加选中状态
        $scope.isActive1=false;
        $scope.isActive2=false;
        $scope.isActive3=false;
        $scope.isActive4=false;
        $scope.isActive5=false;
        $scope.isActive6=false;
        $scope.isActive7=false;
        if($scope.increment==3)
        {
            $scope.isActive1=true;
        }
        else if($scope.increment==2)
        {
            $scope.isActive2=true;
        }
        else if($scope.increment==1)
        {
            $scope.isActive3=true;
        }
        else if($scope.increment==0)
        {
            $scope.isActive4=true;
        }
        else if($scope.increment==-1)
        {
            $scope.isActive5=true;
        }
        else if($scope.increment==-2)
        {
            $scope.isActive6=true;
        }
        else if($scope.increment==-3)
        {
            $scope.isActive7=true;
        }
        //写向前台ajax请求count页内容
    };
    });
    //if(count>allNumber)iflag=false;else iflag=true;
    </script>
  </body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值