功能描述:分页,点击按钮或者下一页获取分页接口,同时active到对应页码。

html模块:

<page page-count="totalPage" on-click-page="reloadData(page)"></page>

controller模块:

var context = $scope;
#scope.reloadData = reloadData;//(重要:需要与页面的事件进行绑定)
function reloadData(page) {
context.params.pageNumber = page || 1;//将参数变为点击的page,默认为1
getPackageList(context.params);//请求后端分页接口(根据业务todo)
}

directive模块:

(function () {//自定义指令
appModule.directive('page', pageController);
function pageController() {
return {
restrict: 'AE',
templateUrl: '/directive/page.html',
scope: {
pageCount:'=',//对应totalPage
onClickPage:'&' //对应reloadData()
}, link: function( scope, elem, attrs, c){
var context = scope;
context.onClickPrev = onClickPrev;
context.onClickNext = onClickNext;
context.onClickPageNumber = onClickPageNumber;
       
       //$scope.watch为了兼容以前版本写法(如一开始就用这个分页组件,分页逻辑相同,可修改为下面一种写法)
!function init() { //!function init()效果和下面一样(这里做了老版本兼容)
context.pageNumber = 1;
scope.$watch(function () {
return context.pageCount//监听发现分页总数变了,执行后面函数
}, function () {
if (typeof context.pageCount != 'object' && typeof parseInt(context.pageCount) == 'number') {
var temp = [];
for (var i = 1; i <= context.pageCount; i++) {
temp.push(i);
}
context.pageCount = temp;
}
});
}();
       //分页逻辑相同,可直接将init写为这样(不用兼容以前)
       init();
       function init(){
        context.pageNumber = 1;
       }
 
function onClickPageNumber(pageNumber) {
context.onClickPage({page:pageNumber});//这里必须按着这种格式写,他是根据数组中的参数名对应来找
          //如果直接这样传参context.onClickPage(pageNumber),会报Cannot use 'in' operator to search for 'reloadData' in 2(寻找不到参数错误)
                context.pageNumber = pageNumber;
context.showPrev = pageNumber > 1;
} function onClickPrev() {
context.pageNumber -= 1;
context.onClickPage({message:context.pageNumber});
if (context.pageNumber == 1) {
context.showPrev = false;
}
context.showNext = true;
} function onClickNext() { if (context.pageNumber < context.pageCount.length) {
context.pageNumber += 1;
}
context.onClickPage({message:context.pageNumber});
}
}
};
}
})();

directive模板:

<div class="page-holder" ng-show="pageCount.length>1">
<span class="prev m-link" ng-if="pageNumber != 1" ng-click="onClickPrev()">&lt;</span>
<div style="display: inline" class="m-default"
    ng-repeat="page in pageCount track by $index" ng-show="($index+1>pageCount.length-5&&pageNumber>pageCount.length-3)||($index<5&&pageNumber<4)||($index+1>pageNumber-3 && $index+1<pageNumber+3)">
<span class="page m-link" ng-class="{'green':page == pageNumber}"
ng-click="onClickPageNumber(page)">{{page}}</span>
</div>
<span class="next m-link" ng-if="pageNumber != pageCount.length" ng-click="onClickNext()">&gt;</span>
<span class="total-page m-default">共 {{pageCount.length}} 页</span>
</span>
</div> <style>
.page-holder {
display: inline-block;
height: 30px;
line-height: 30px;
margin-right: 20px;
float: right;
} .page, .prev, .next, .total-page {
color: #616161;
padding: 0px 6px;
border:1px solid #f2f2f2;
} .green{
color:#0A9908;
}
</style> 效果如下:

  -----原创文章,©版权所有,转载请注明标明出处:http://www.cnblogs.com/doinbean
												

angular自定义分页组件(实用)的更多相关文章

  1. Angular4.+ ngx-bootstrap Pagination 自定义分页组件

    Angular4 随笔(二)  ——自定义分页组件 1.简介 本组件主要是实现了分页组件显示功能,通过使用 ngx-bootstrap Pagination分页组件实现. 基本逻辑: 1.创建一个分页 ...

  2. Python自定义分页组件

    为了防止XSS即跨站脚本攻击,需要加上 safe # 路由 from django.conf.urls import url from django.contrib import admin from ...

  3. Django框架---- 自定义分页组件

    分页的实现与使用 class Pagination(object): """ 自定义分页 """ def __init__(self,cur ...

  4. vue 自定义分页组件

    vue2.5自定义分页组件,可设置每页显示条数,带跳转框直接跳转到相应页面 Pagination.vue 效果如下图: all: small(只显示数字和上一页和下一页): html <temp ...

  5. 基于 Python 的自定义分页组件

    基于 Python 的自定义分页组件 分页是网页中经常用到的地方,所以将分页功能分出来,作为一个组件可以方便地使用. 分页实际上就是不同的 url ,通过这些 url 获取不同的数据. 业务逻辑简介 ...

  6. vue自定义分页组件---切图网

    vue2.5自定义分页组件 Pagination.vue,可设置每页显示条数,带跳转框直接跳转到相应页面,亲测有用.目前很多框架自带有分页组件比如elementUI,不过在面对一个拿到PSD稿,然后重 ...

  7. Flex4 自定义分页组件

    自己写的Flex4分页组件,去伪存真,只实现基本的分页功能,数据过滤神马的都不应该是分页组件干的活,有呆毛才有真相: [源代码下载] Flex自从转手给Apache后人气急跌,本人也很捉鸡,尽管Apa ...

  8. jquery ajax自定义分页组件(jquery.loehpagerv1.0)原创

    简单的两个步骤截可调用 <script src="<%=basePath%>/resources/js/jquery-1.7.1.min.js"></ ...

  9. Django 分页组件替换自定义分页

    Django的分页器(paginator) 总之不太好用我们还是用自己的好一些 自定义分页器 分页实现源码 """ 自定义分页组件 """ ...

随机推荐

  1. [转载] Thrift-server与spring集成

    转载自http://shift-alt-ctrl.iteye.com/blog/1990026 Thrift服务server端,其实就是一个ServerSocket线程 + 处理器,当Thrift-c ...

  2. IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”

    Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...

  3. Intrumentation类:ActivityInstrumentationTestCase2学习(1)

    public abstract class ActivityInstrumentationTestCase2 extends ActivityTestCase//继承自ActivityTestCase ...

  4. 基于SwiperJs的H5/移动端下拉刷新上拉加载更多的效果

    最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...

  5. 已知前序(后序)遍历序列和中序遍历序列构建二叉树(Leetcode相关题目)

    1.文字描述: 已知一颗二叉树的前序(后序)遍历序列和中序遍历序列,如何构建这棵二叉树? 以前序为例子: 前序遍历序列:ABCDEF 中序遍历序列:CBDAEF 前序遍历先访问根节点,因此前序遍历序列 ...

  6. laravel5.3统计 withCount()方法的使用

    在laravel5.3之后可以使用withCount()这个方法. 注意:一定要是5.3版本之后,5.2和5.1都会报方法未定义 举个栗子: App\Post::withCount('comments ...

  7. 基于微博LBS API开发的周边美图android app

    [app 不完善,就差api了] 几年之前看到过新浪微博开放API中有基于Place的API,授权后可以查看基于地理位置的一些数据,比如某个地点周边的微博动态.某个具体用户的位置动态等等.最近空余时间 ...

  8. python实战--数据结构二叉树

    此文将讲述如何用python实战解决二叉树实验 前面已经讲述了python语言的基本用法,现在让我们实战一下具体明确python的用法 点击我进入python速成笔记 先看一下最终效果图: 首先我们要 ...

  9. 利用python web框架django实现py-faster-rcnn demo实例

    操作系统.编程环境及其他: window7  cpu  python2.7  pycharm5.0  django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...

  10. ssm开发使用redis作为缓存,使用步骤

    1.关于spring配置文件中对于redis的配置 <!-- redis配置 --> <bean id="jedisPoolConfig" class=" ...