在项目开发中我们经常会遇到图片轮播的功能点:

如果我们开发人员自己原生手写,将会花费很多的时间,最终得不偿失。

接下来就详细说说如何使用angular-ui发热图片轮播模块,并且将它写成一个指令(便于复用)

一如既往的我们项目中使用时requireJS进行js代码的编译

准备工作:

1):引入angularJS , ui-bootstrap-tpls-1.3.2(我使用的是1.3.2版本的)

第一步:自己写一个指令(命名为picchange)

说明:指令控制器中的代码都是angualr-ui官网上拷贝的(因为此文章的重点是如何将其封装成指令,其他的不做重点)

指令的js代码define(['app'],function(myapp){myapp.directive('picchange',[function(){return {scope:{picurl:'=',},controller:['$scope',function($scope){$scope.myInterval = 5000;//轮播的时间间隔$scope.noWrapSlides = false;//是否循环轮播$scope.active = 0;//起始所显示的图片(0:下标为0的图片)var slides = $scope.slides = [];//用于存放图片地址var currIndex = 0;$scope.addSlide = function() {var newWidth =  slides.length + 1;slides.push({image: $scope.picurl[newWidth].imgUrl,//图片的urltext:  $scope.picurl[newWidth].wordDes,//图片的描述文字id: currIndex++});};              //................随机...........$scope.randomize = function() {var indexes = generateIndexesArray();assignNewIndexesToSlides(indexes);};for (var i = 0;i<$scope.picurl.length;i++) {$scope.addSlide();}// Randomize logic belowfunction assignNewIndexesToSlides(indexes) {for (var i = 0, l = slides.length; i < l; i++) {slides[i].id = indexes.pop();}}function generateIndexesArray() {var indexes = [];for (var i = 0; i < currIndex; ++i) {indexes[i] = i;}return shuffle(indexes);}// http://stackoverflow.com/questions/962802#962890function shuffle(array) {var tmp, current, top = array.length;if (top) {while (--top) {current = Math.floor(Math.random() * (top + 1));tmp = array[current];array[current] = array[top];array[top] = tmp;}}return array;}}],templateUrl:'js/directives/picchange/picchange.html',//轮播的页面link:function(s,e,attrs){},}}]);
});好了上面的代码都是拷贝来的,不做解释

轮播模块的html:(picchange.html),指令的html(这个没啥理解的)

指令的html<div><div style="height: 305px"><uib-carousel active="active" interval="myInterval" no-wrap="noWrapSlides"><uib-slide ng-repeat="slide in slides track by slide.id" index="slide.id"><img ng-src="{{slide.image}}"  style="margin:auto;"><div class="carousel-caption"><h4>Slide {{slide.id}}</h4><p>{{slide.text}}</p></div></uib-slide></uib-carousel></div><div class="row"><div class="col-md-6"><button type="button" class="btn btn-info" ng-click="addSlide()">Add Slide</button><button type="button" class="btn btn-info" ng-click="randomize()">Randomize slides</button><div class="checkbox"><label><input type="checkbox" ng-model="noWrapSlides">Disable Slide Looping</label></div></div><div class="col-md-6">Interval, in milliseconds: <input type="number" class="form-control" ng-model="myInterval"><br />Enter a negative number or 0 to stop the interval.</div></div>
</div> 

到此为止关于指令的封装已经完成,接下来是如何使用的问题:

(1)有一个页面要用到此指令:(命名为test.html)

<p>图片的轮播</p>
<div picchange picurl='img'></div><!--img是用来传递参数的-->

 test.html对应的控制器:(idea_test_ctrl)

define(['app','directives/picchange/picchange'],function(myapp){myapp.controller('idea_test_ctrl',['$scope',function($scope){console.log("this is idea_test_ctrl 的控制器");$scope.img=[//img是一个对象,其中包含了图片的地址,以及文字描述{imgUrl:'images/test/1.jpg',wordDes:'this is good pic'},{imgUrl:'images/test/2.jpg',wordDes:'这是一张很好看的图片'},{imgUrl:'images/test/3.jpg',wordDes:'it is good pic'}];}]);
});

这里给出我的路由配置,便于大家理解:

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

到此已经讲解完;

ui-bootstrap的地址:http://angular-ui.github.io/bootstrap/versioned-docs/1.3.2/

转载于:https://www.cnblogs.com/evaling/p/6830156.html

如何将angular-ui-bootstrap的图片轮播组件封装成一个指令相关推荐

  1. vue 实现无限轮播_使用Vue制作图片轮播组件思路详解

    之前一直都没有认真的写过一个组件.以前在写业务代码的过程中,都是用的别人封装好的组件,这次尝试着写了一个图片轮播组件,虽然比不上知名的轮播组件,但它的功能基本完整,而且在写这个组件的过程中,学的东西也 ...

  2. bootstrap 轮播控制时间_【前端冷知识】如何封装一个图片轮播组件

    组件封装是一个前端工程师进阶的必经之路.组件封装是指Web页面上抽出来一个个包含模版(HTML).功能(Javascript)和样式(CSS)的单元.所以,今天的内容,我们将带你了解组件封装的开发思路 ...

  3. Angular2组件与指令的小实践——实现一个图片轮播组件

    如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图. 而除了直接看的见的躯体之外,一个完整的" ...

  4. unity实现图片轮播效果_Unity实现图片轮播组件

    游戏中有时候会见到图片轮播的效果,那么这里就自己封装了一个,包括自动轮播.切页按钮控制.页码下标更新.滑动轮播.切页后的回调等等 . 下面,先上一个简陋的gif动态效果图 从图中可以看出,该示例包括了 ...

  5. 造轮子之图片轮播组件(swiper)

    图片轮播是种很常见的场景和功能,一般移动网站首页的轮播 banner,商品详情页的商品图片等位置都会用到此功能 像这种常用的场景功能肯定是有人早就写好插件了的,所以遇到这种场景,一般都遵循以下三步: ...

  6. Unity之图片轮播组件实现

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 正文 游戏中有时候会见到图片轮播的效果,那么这里就自己封装了一个,包括自动轮播.切页按钮控制.页码下标更新.滑动轮播.切页后 ...

  7. android 图片轮播组件,Android客户端实现图片轮播控件

    本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下 1. 轮播控件的组成部分 我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成: 首先我们要有用来显示 ...

  8. Omi-touch实战 移动端图片轮播组件的封装

    pc端的轮播,移动端的轮播都很常见.一年前,我还为手机端没有左滑,右滑事件从而封装了一个swipe库,可以自定义超过多少滑动时间就不触发,也可以设置滑动多少距离才触发,这一个功能的代码就达到400多行 ...

  9. Vue——图片轮播组件

    Notices: 这是我一个项目中的一个子组件,要展示的数据.图片地址等的都在父组件data中.所以后面的讲述都是基于从父组件获取的参数进行处理.(如需将这个SlideShow写成一个单独的主组件,将 ...

  10. 【JavaScript】原生态兼容IE6的图片轮播

    <[Bootstrap]图片轮播组件Carousel>(点击打开链接)虽然做得很不错,但是由于只兼容到IE8,所以没有用的.其实原生态兼容IE6的图片轮播并没有想象中的那么难,网上的很多兼 ...

最新文章

  1. 干货 | 旷视科技俞刚:我在旷视研究院做检测
  2. Python极简入门:数据类型、条件语句、循环语句、异常处理
  3. tensorflow随笔-tf.ReaderBase
  4. GARFIELD@01-07-2005
  5. android项目编译命令行,命令行编译Android项目
  6. php中写salt,请快速检查这个PHP+SALT实现-不工作?
  7. 《网络攻防》 第六周学习总结
  8. 抓取Crash不让崩溃
  9. linux修改文件的权限和修改文件所有者和所属组
  10. 行走在消逝中[LoLi有三好]
  11. 一些技术大牛的博客集锦(转)
  12. JS对大陆车牌照的归属地(省份和城市)加载和显示
  13. Fluorescent-PEG2000-Pyrene,荧光素和芘丁酸修饰的PEG,Pyrene-PEG2000-FITC
  14. 网站建设流程-面向公司
  15. 时间精力管理4象限法
  16. 湖南中职计算机考试练习题
  17. OSPF多区原理与配置
  18. DHCP服务器配置windows2016
  19. C语言中typeof作用,c语言中typeof关键字
  20. Ubuntu 11.04安装pcsx2模拟器简明过程

热门文章

  1. 云计算就业前景怎么样 学后可以胜任哪些岗位
  2. xp系统进不去2008服务器共享,xp系统设置访问Server 2008R2的共享不输入密码的方法...
  3. python docx创建表格
  4. 学习嵌入式单片机需要学习哪些内容?
  5. 怎么恢复服务器上刚刚删除的文件,怎样恢复刚刚删除的文件 详细教程分享【图解】...
  6. 泰戈尔专集:飞鸟集·新月集·园丁集(美冠纯美阅读书系·外国卷) 读后感
  7. Delicious Retouch 5—PS磨皮插件
  8. 互联网的寒冬是否只是以讹传讹?
  9. 涨姿势!2020最好的 10 大国外编程学习网站
  10. compositionstart、compositionend事件屏蔽拼音状态