AngularJs分页插件

angularUI bootstrap提供的分页插件满足了大部分应用的需求。


地址http://angular-ui.github.io/bootstrap/#/pagination


在项目需求中,新增了两个需求:

1.自由设定每页显示的条目;

2.可以手动输入页面,跳转到指定的页数。


html代码

<div class="pagination-define p20 mt20" ng-hide="totalItems==0">
    <select ng-model="perPageSize" ng-change="pageChanged({currentPage:currentPage,perPageSize:perPageSize})" >
        <option value=10 ng-selected="perPageSize==10">10</option>
        <option value=20>20</option>
        <option value=30>30</option>
        <option value=50>50</option>
        <option value=100>100</option>
    </select>
    <uib-pagination  items-per-page="numPerPage" total-items="totalItems" ng-model="currentPage" ng-change="pageChanged({currentPage:currentPage,perPageSize:perPageSize})" max-size="5" class="pagination-sm" boundary-link-numbers="true" boundary-links="true" rotate="false" previous-text="‹" next-text="›" first-text="«" last-text="»"></uib-pagination>
    <input type="text" ng-model="inputCurPage" min=1 cus-max-number ="{{maxPages}}" current-page="{{currentPage}}">
    <button class="btn btn-info btn-30h" ng-click="pageChanged({currentPage:inputCurPage,perPageSize:perPageSize})" ng-disabled="inputCurPage==''||submitting">Go</button>
</div>

css代码

.pagination-define{
    text-align: center
}
.pagination-define input, .pagination-define select {
    padding-left: 3px;
    height: 30px;
    vertical-align: top;
    border: 1px solid #ccc;
    border-radius: 4px;
    width: 50px;
}
.pagination {
    margin: 0;
}
.pagination-define .btn-30h {
    vertical-align: top;
}
.btn-30h {
    padding-top: 4px;
    padding-bottom: 4px;
}

Javascript代码

app.directive('cusMaxNumber', ['$timeout', function ($timeout) {
        return {
            restrict: 'EA',
            require: 'ngModel',
            scope: {
                maxNumber: '@cusMaxNumber',
                currentPage: '@currentPage'
            },
            link: function (scope, element, attr, ctrl) {
                ctrl.$parsers.push(function (viewValue) {
                    var maxNumber = parseInt(scope.maxNumber, 10);
                    var curNumber = scope.currentPage; //当前页数
                    var transformedInput = viewValue.replace(/[^0-9]/g, '');
                    if (transformedInput !== viewValue||parseInt(transformedInput,10)<1||parseInt(transformedInput,10)>maxNumber) {
                        ctrl.$setViewValue(curNumber);
                        ctrl.$render();
                        return curNumber;
                    }
                    return viewValue;
                });
            }
        };
    }])
.directive('cusPagination',[function(){
        return {
            restrict: "E",
            templateUrl: 'views/template/pagination.html',
            scope: {
                numPerPage: "=numPerPage",
                totalItems: "=totalItems",
                currentPage: "=cusCurrentPage",
                perPageSize:"=perPageSize",
                inputCurPage:"=inputCurPage",
                maxPages:"=maxPages",
                pageChanged: "&pageChanged"
            },
            replace: false
        };
    }]);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值