全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

将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的属性吗?)

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


# angular  # 分页组件  # angularjs  # 组件封装  # 组件和指令  # angularjs使用directive实现分页组件的示例  # Angular2自定义分页组件  # 分页  # 每页  # 当前页  # 复用  # 首页  # 末页  # 好了  # 你可以  # 中有  # 会在  # 可在  # 你已经  # 这篇文章  # 谢谢大家  # 这几个  # 第一条  # 准备工作  # 不包括  # 第二步  # 抛出 


相关文章: c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  创业网站制作流程,创业网站可靠吗?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  英语简历制作免费网站推荐,如何将简历翻译成英文?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  视频网站制作教程,怎么样制作优酷网的小视频?  如何用好域名打造高点击率的自主建站?  SQL查询语句优化的实用方法总结  建站主机是否等同于虚拟主机?  建站之星安装路径如何正确选择及配置?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  深圳网站制作案例,网页的相关名词有哪些?  如何通过虚拟主机空间快速建站?  济南专业网站制作公司,济南信息工程学校怎么样?  宝塔面板如何快速创建新站点?  定制建站方案优化指南:企业官网开发与建站费用解析  如何在宝塔面板创建新站点?  音乐网站服务器如何优化API响应速度?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  北京网站制作网页,网站升级改版需要多久?  完全自定义免费建站平台:主题模板在线生成一站式服务  家具网站制作软件,家具厂怎么跑业务?  nginx修改上传文件大小限制的方法  linux top下的 minerd 木马清除方法  宝塔建站助手安装配置与建站模板使用全流程解析  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  高端云建站费用究竟需要多少预算?  建站之星客服服务时间及联系方式如何?  如何快速查询网站的真实建站时间?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  济南网站制作的价格,历城一职专官方网站?  如何在腾讯云免费申请建站?  jQuery 常见小例汇总  C#如何序列化对象为XML XmlSerializer用法  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  建站VPS配置与SEO优化指南:关键词排名提升策略  如何有效防御Web建站篡改攻击?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  内网网站制作软件,内网的网站如何发布到外网?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  制作证书网站有哪些,全国城建培训中心证书查询官网?  如何用美橙互联一键搭建多站合一网站?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何在七牛云存储上搭建网站并设置自定义域名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。