当前位置:首页 > 日记 > 正文

将angular-ui的分页组件封装成指令的方法详解

将angular-ui的分页组件封装成指令的方法详解

准备工作:

(1)一如既往的我还是使用了requireJS进行js代码的编译

(2)必须引入angualrJS , ui-bootstrap-tpls-1.3.2.js , bootstrap.css....

首先抛出几个问题:

a):何时回用到分页 (当后端返回的数据过多,一页装不满时,我们必须要采取分页的效果,给用户良好的视觉效果)

b):分页一般要传递哪些数据 (总的数据数量,每页固定显示多少条数据,当点击分页时候返回当前的页码.......这三条是必须的)

第一步:先完成指令的封装

我会在 js/directives/pagedir 此文件下完成指令的编写

pagedir.html(指令页面模板)

<div> <button class="btn btn-info" type="button" ng-click="setPage(3)">Set current page to: 3</button> <h6><code>rotate</code> defaulted to <code>true</code> and <code>force-ellipses</code> set to <code>true</code>:</h6> <uib-pagination class="pagination-sm" 分页函数="" ng-change="pageChanged()" 是否将当前页显示在中间="" rotate="true" 是否显示首页,和末页的数字="" boundary-link-numbers="true" 是否显示“.....”这几个点="" force-ellipses="true" 显示页码的页码tabs数量(不包含首页,末页)="" max-size="maxSize" 当前页="" ng-model="bigCurrentPage" 每页显示的数据条数=""     ="" items-per-page="pageSize" 总的数据记录数="" total-items="bigTotalItems"      =""> </uib-pagination> <pre>Page: {{bigCurrentPage}}/{{numPages}}</pre> </div>

pagedir.js(指令的操作js)

define(['app'],function(myapp){ myapp.directive("pagedir",[function(){  return{    templateUrl:"js/directives/pagedir/pagedir.html",//指令的模板页面    restrict:'AE',    scope:{     data:'=',   //用于获取页面控制器传回来的数据(例如:总得记录数,每页显示的数量等....)     currentpage:'=', //返回当前页给页面控制器    },    link:function(s,el,attrs){         },    controller:['$scope','$log',function($scope,$log){     $scope.bigTotalItems=$scope.data.bigTotalItems;     $scope.pageSize=$scope.data.pageSize;     $scope.bigCurrentPage=$scope.data.bigCurrentPage;     $scope.numPages=$scope.data.numPages;     $scope.maxSize=$scope.data.maxSize;     $scope.setPage = function (pageNo) {//用于设置回到指定页      $scope.bigCurrentPage = pageNo;      console.log( $scope.bigCurrentPage);     };     $scope.pageChanged = function() {//用于返回当前页      $log.log('Page changed to: ' + $scope.bigCurrentPage);      console.log($scope.bigCurrentPage);      $scope.currentpage=$scope.bigCurrentPage;//赋值,准备传给页面控制器,用于接口的取值     };    }],  } }]);}); 

第二步:明确使用地方

我打算在test.html页面上使用分页的功能(你可以在各个有多条数据现实的页面使用分页)

 test.html

<p>this is page dir</p><pagedir ng-click="getCurPage()" currentpage="currentpage" data="dataPage"> </pagedir> 

对应的控制器:idea_test_ctrl

define(['app','directives/pagedir/pagedir'],function(myapp){ myapp.controller("idea_test_ctrl",['$scope',function($scope){  $scope.dataPage={ //用于分页的数据   maxSize:5,     //显示五个页码按钮(不包括第一条,和最后一条)   bigTotalItems:50,   //总的记录数(一般来源于接口的返回数据)   bigCurrentPage:1,  //当前页码   pageSize:5,    //每页显示的数据数量   numPages:50/5,   //共有多少页  };  $scope.getCurPage=function(){   console.log($scope.currentpage,"========================================");   //接下来的调用后台接口,返回数据   //...........................一系列的后续操作  } }]);});  

最终页面的显示效果

顺便给出路由的配置

.state('home.ideas.test', {    url: '/test',    views: {     "part": {      templateUrl: 'tpls/ideas/test.html',      controller:"idea_test_ctrl"     }    } }) 

总结一下:封装此指令的难点(假如你已经了解怎么使用angualr的指令了)

1>:如何双向传值的问题(在页面控制器设置的数值传递到分页模块控制器,以及每次点击分页怎么样将页码传回页面控制器用于调用接口的传参) 

一点分享:link链接方法与指令的controller有啥关系(貌似都可以进行数据的操作) 指令的控制器和link函数可以进行互换。控制器主要是用来提供可在指令间复用的行为,但链接函数只能在当前内部指令中定义行为,且无法在指令间复用.link函数可以将指令互相隔离开来,而controller则定义可复用的行为。 (指令是可以嵌套的,还记得我们指令中有一个require的属性吗?)

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

相关文章

如何运用Excel来制作付款单

如何运用Excel来制作付款单

付款,电脑软件,Excel,  付款凭单,是一种授权付款的凭证,如果公司需要制作付款凭单,那么应该怎么利用Excel表格来完成呢?以下是小编为您带来的关于Excel制作付款单,希望对您有所帮助。Excel制作付款单1、选中第一行的前八个单元格,开始-对齐方…

excel2010无法合并单元格的解决方

excel2010无法合并单元格的解决方

合并单元格,解决方法,电脑软件,strong,  Excel中遇到单元格无法合并的问题该如何解决呢?下面是小编带来的关于excel2010无法合并单元格的解决方法,希望阅读过后对你有所启发!excel2010无法合并单元格的解决方法无法合并单元格步骤1:打开exc…

powerpoint无法放映下一页怎么办

powerpoint无法放映下一页怎么办

处理方法,下一页,幻灯片,不能播放,电脑软件,  制作完幻灯片在播放时出现问题,不能播放下一页幻灯片,遇到这种奇怪的问题该怎么办呢?有解决的方法吧?下面小编马上就告诉大家ppt不能播放下一页幻灯片的处理方法,希望看完本教程的朋友都能学会…

QQ空间说说新增定时发表功能

QQ空间说说新增定时发表功能

空间,功能,电脑软件,QQ,ldquo,  很多人都喜欢在QQ空间里面发说说,特别是别人生日的时候,但难免可能会忘记发,这时候就有一个定时发表功能,如何定时发表空间说说?下面是小编整理的一些关于QQ空间说说新增定时发表功能的相关资料,供您参考。QQ空…

ES6字符串模板,剩余参数,默认参数功

ES6字符串模板,剩余参数,默认参数功

默认参数,模板,字符串,参数,示例,本文实例讲述了ES6字符串模板,剩余参数,默认参数功能与用法。分享给大家供大家参考,具体如下:这里介绍一下字符串模板以及剩余参数,默认参数的概念以及使用。先来说说字符串模板。字符串模板ES6中允许使用反引号…

javascript深拷贝的原理与实现方法

javascript深拷贝的原理与实现方法

方法,深拷贝,原理,电脑软件,javascript,本文实例讲述了javascript深拷贝的原理与实现方法。分享给大家供大家参考,具体如下:要讲JavaScript的拷贝,就得先讲讲javascript中的值传递和引用传递。javascript中没有一个具体的语法来规定哪些参数是…

excel中分列单元格的教程

excel中分列单元格的教程

教程,单元格,电脑软件,excel,  Excel中的单元格该如何分列呢?下面是由小编分享的excel中分列单元格的教程,以供大家阅读和学习。excel中分列单元格的教程:  分列单元格步骤1:打开需要分列的excel表分列单元格步骤2:选中需要分列的数据,在exc…

微信小程序 wx:for的使用实例详解

微信小程序 wx:for的使用实例详解

详解,实例,程序,电脑软件,微信小,微信小程序 wx:for的使用实例详解在小程序的开发过程中,经常会用到在前端页面循环打印一个数组或者对象的数据,这样的话就需要用wx:for来实现。一般情况下,小程序的utils这个文件夹下,我们可以把本地的数据写进…

excel中怎么使用记录单增加信息exc

excel中怎么使用记录单增加信息exc

使用记录,步骤,方法,电脑软件,excel,  使用Excel统计数据信息,面对信息的插入,少量数据可以直接点击表格输入数据。但是如果数据量达到2-3万条,就是拖动也需要花费一定的时间。加上如果一条数据存在多个列,导致输入过程变得更加费时。下…

关于彻底死心的个性签名

关于彻底死心的个性签名

个性签名,热门,简单,新篇,经典,  网络时代,几乎每个人都有自己的QQ号,每个QQ号都有属于自己的个性签名。表达彻底死心的个性签名有哪些?下面是彻底死心的个性签名,希望小编整理的对你有用,欢迎阅读:关于彻底死心的个性签名【经典篇】下一站,会…

Angular.js中window.onload | ,$ |

Angular.js中window.onload | ,$ |

写法,电脑软件,window,js,Angular,一,问题发现:最近公司有个微信公众号项目,为了方便直接使用anular.js+ionic进行开发,里面有使用到echarts图表,具体开发中发现echarts在初始化绑定图表的DOM节点时,一直提示该节点不合法;可是明明已经把代…

深入理解Vue2.x的虚拟DOM diff原理

深入理解Vue2.x的虚拟DOM diff原理

虚拟,原理,电脑软件,diff,DOM,前言经常看到讲解Vue2的虚拟Dom diff原理的,但很多都是在原代码的基础上添加些注释等等,这里从0行代码开始实现一个Vue2的虚拟DOM实现VNodesrc/core/vdom/Vnode.jsexport class VNode{ constructor ( tag, //标…