AngularJs自定义分页

创建一个Html分页的模板

<div>
    <ul>
        <li class="pageleft" ng-click="PrevGroup()">
            <!--<a href="#"><</a>-->
        </li>
        <li class="pagepublic" ng-class="{pageliselect:($index+1+settings.pageRangeIndex*settings.pageRange==pageIndex)}" ng-repeat="item in []|RepeatRange:pageShowRange" ng-click="ChangePage($index + 1 + settings.pageRangeIndex * settings.pageRange)">
            <a href="#" class="pageaunselect">{{$index+1+settings.pageRangeIndex*settings.pageRange}}</a>
        </li>
        <li class="pageright" ng-click="NextGroup()">
            <!--<a href="#" aria-label="Next">></a>-->
        </li>
    </ul>
</div>

RepeatRange的filter

App.filter(‘RepeatRange‘, function () {
    return function (input, total) {
        total = parseInt(total);

        for (var i = 0; i < total; i++) {
            input.push(i);
        }
        return input;
    }
})

定义指令

App.directive(‘dirPage‘, [function () {
    return {
        restrict: ‘A‘,
        scope: {
            pageChange: "=",
            pageModel: "=dirPage",
        },
        replace: true,
        templateUrl: ‘spa/plugins/page/template/page.html‘,
        link: pageLink
    }
}]);

function pageLink(scope, element, attrs) {
    function initSettings() {
        if (!scope.settings) {
            scope.settings = {};
        }
        if (!scope.settings.pageSize) {
            scope.settings.pageSize = 10;
        }
        if (!scope.settings.pageRange) {
            scope.settings.pageRange = 10;
        }
        if (!scope.settings.pageRangeIndex) {
            scope.settings.pageRangeIndex = 0;
        }
    }
    initSettings();

    function initPageChange()
    {
        if (scope.pageModel.pageSize)
            scope.settings.pageSize = scope.pageModel.pageSize;
        if (scope.pageModel.pageRange)
            scope.settings.pageRange = scope.pageModel.pageRange;
        scope.totalCount = scope.pageModel.totalCount;
        scope.pageIndex = scope.pageModel.pageIndex;
        if (scope.pageModel.totalCount % scope.settings.pageSize > 0)
            scope.pageCount = parseInt(scope.pageModel.totalCount / scope.settings.pageSize) + 1;
        else
            scope.pageCount = parseInt(scope.pageModel.totalCount / scope.settings.pageSize)
        if (scope.pageCount - scope.settings.pageRange * scope.settings.pageRangeIndex > scope.settings.pageRange)
            scope.pageShowRange = scope.settings.pageRange;
        else
            scope.pageShowRange = scope.pageCount - scope.settings.pageRange * scope.settings.pageRangeIndex;
    }

    initPageChange();

    scope.ChangePage = function (pageIndex) {
        scope.pageIndex = pageIndex;
        if (scope.pageChange) {
            scope.pageChange(pageIndex);
        }
    }

    scope.PrevGroup = function () {
        if (scope.settings.pageRangeIndex >= 1) {
            scope.settings.pageRangeIndex--
            initPageChange();
        }
    }
    scope.NextGroup = function () {
        if (scope.pageCount - scope.settings.pageRange * scope.settings.pageRangeIndex > scope.settings.pageRange) {
            scope.settings.pageRangeIndex++
            initPageChange();
        }
    }
}
时间: 2024-10-14 10:32:52

AngularJs自定义分页的相关文章

AngularJS自定义指令详解(有分页插件代码)

前言 除了 AngularJS 内置的指令外,我们还可以创建自定义指令. 通过 .directive() 函数来添加自定义的指令. 调用自定义指令时,需要在HTMl 元素上添加自定义指令名. 自定义指令命名规则:使用驼峰命名法来命名,即除第一个单词外的首字母需大写.如: myDirective. 在html页面调用该指令时需要以 - 分割,如: my-directive.示例代码: <body ng-app="myApp"> <my-directive><

laravel5自定义分页

laravel5分页处理与laravel4略有区别,laravel5提供了更方便的处理方式,可以方便满足不同分页展示. laravel4自定义分页:http://php2012web.blog.51cto.com/5585213/1539601 laravel分页处理有分两个入口,即两个处理对象: DB操作分页       Illuminate\Database\Query\Builder ORM操作分页   Illuminate\Database\Eloquent\Builder DB操作分页

JSP自定义分页标签TAG

首先我们需要在WEB-INF/tld/目录下创建page.tld文件 <?xml version="1.0" encoding="ISO-8859-1"?> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>page</short-name> <u

gridview自定义分页 aspNetPager用法

这几天做gridview分页,自带的分页不好用.从网上搜刚开始搜了一个aspNetPager.dll,替换原来的一个dll,自己设置了一些,比如这个控件不显示中文,后来我改成中文的"上一页"."下一页"."首页""尾页",把ShowPageIndexBox设置为默认true,这样当前页也显示了,还能跳转. 还设置了 显示自定义区域,默认是不显示了,我改成left,然后再设置下自定义的html,结果就可以显示了,我显示的是 一共

django 自定义分页模块

django 自定义分页模块 from django.shortcuts import render, HttpResponse, redirect from django.utils.safestring import mark_safe class Page(object): def __init__(self, current_page): self.current_page = int(current_page) @property def start(self): return (se

基于Angularjs实现分页

基于Angularjs实现分页 http://www.cnblogs.com/sword-successful/archive/2015/06/28/4605222.html

thinkphp自定义分页效果

TP自带了一个分页函数,挺方便使用的. 下面是我的使用方法: 1 /*****************分页显示start*************************/ 2 $arr_page=$this->page($user,1); 3 $show=$arr_page['show']; 4 $Page=$arr_page['Page']; 5 $article = $user->order('now')->limit($Page->firstRow.','.$Page-&g

主攻ASP.NET.4.5.1 MVC5.0之重生:创建UIHelper通用自定义分页和选择开关与PagesHelper和IsSelect简单用法

@helper放入地方 分页效果 选择开关编辑调用 <dl> <dd class="dc1">是否主管:</dd> <dd> @UIHelper.IsSelect("IsManager",Model.IsManager.ToString()); </dd> </dl> 分页调用 <div class="rg5"> @UIHelper.PagesHelper(Vie

AngularJS 自定义服务、指令

参考链接:http://www.111cn.net/wy/js-ajax/90977.htm AngularJS 注册服务 AngularJS的后台控制可以在Controller里面实现. 可是如果所有的逻辑代码都写到Controller会显得该Controller过于臃肿. 不方便维护, AngularJS提供了一个可以依赖注入的方法.我们可以将逻辑处理封装到Service中,需要调用只需要引入对应的Service即可. AngularJS 自定义指令(个人感觉像React的编程思想) 在前端