如何将angular-ui-bootstrap的图片轮播组件封装成一个指令
在项目开发中我们经常会遇到图片轮播的功能点:
如果我们开发人员自己原生手写,将会花费很多的时间,最终得不偿失。
接下来就详细说说如何使用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的图片轮播组件封装成一个指令相关推荐
- vue 实现无限轮播_使用Vue制作图片轮播组件思路详解
之前一直都没有认真的写过一个组件.以前在写业务代码的过程中,都是用的别人封装好的组件,这次尝试着写了一个图片轮播组件,虽然比不上知名的轮播组件,但它的功能基本完整,而且在写这个组件的过程中,学的东西也 ...
- bootstrap 轮播控制时间_【前端冷知识】如何封装一个图片轮播组件
组件封装是一个前端工程师进阶的必经之路.组件封装是指Web页面上抽出来一个个包含模版(HTML).功能(Javascript)和样式(CSS)的单元.所以,今天的内容,我们将带你了解组件封装的开发思路 ...
- Angular2组件与指令的小实践——实现一个图片轮播组件
如果说模块系统是Angular2的灵魂,那其组件体系就是其躯体,在模块的支持下渲染出所有用户直接看得见的东西,一个项目最表层的东西就是组件呈现的视图. 而除了直接看的见的躯体之外,一个完整的" ...
- unity实现图片轮播效果_Unity实现图片轮播组件
游戏中有时候会见到图片轮播的效果,那么这里就自己封装了一个,包括自动轮播.切页按钮控制.页码下标更新.滑动轮播.切页后的回调等等 . 下面,先上一个简陋的gif动态效果图 从图中可以看出,该示例包括了 ...
- 造轮子之图片轮播组件(swiper)
图片轮播是种很常见的场景和功能,一般移动网站首页的轮播 banner,商品详情页的商品图片等位置都会用到此功能 像这种常用的场景功能肯定是有人早就写好插件了的,所以遇到这种场景,一般都遵循以下三步: ...
- Unity之图片轮播组件实现
博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 正文 游戏中有时候会见到图片轮播的效果,那么这里就自己封装了一个,包括自动轮播.切页按钮控制.页码下标更新.滑动轮播.切页后 ...
- android 图片轮播组件,Android客户端实现图片轮播控件
本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下 1. 轮播控件的组成部分 我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成: 首先我们要有用来显示 ...
- Omi-touch实战 移动端图片轮播组件的封装
pc端的轮播,移动端的轮播都很常见.一年前,我还为手机端没有左滑,右滑事件从而封装了一个swipe库,可以自定义超过多少滑动时间就不触发,也可以设置滑动多少距离才触发,这一个功能的代码就达到400多行 ...
- Vue——图片轮播组件
Notices: 这是我一个项目中的一个子组件,要展示的数据.图片地址等的都在父组件data中.所以后面的讲述都是基于从父组件获取的参数进行处理.(如需将这个SlideShow写成一个单独的主组件,将 ...
- 【JavaScript】原生态兼容IE6的图片轮播
<[Bootstrap]图片轮播组件Carousel>(点击打开链接)虽然做得很不错,但是由于只兼容到IE8,所以没有用的.其实原生态兼容IE6的图片轮播并没有想象中的那么难,网上的很多兼 ...
最新文章
- 干货 | 旷视科技俞刚:我在旷视研究院做检测
- Python极简入门:数据类型、条件语句、循环语句、异常处理
- tensorflow随笔-tf.ReaderBase
- GARFIELD@01-07-2005
- android项目编译命令行,命令行编译Android项目
- php中写salt,请快速检查这个PHP+SALT实现-不工作?
- 《网络攻防》 第六周学习总结
- 抓取Crash不让崩溃
- linux修改文件的权限和修改文件所有者和所属组
- 行走在消逝中[LoLi有三好]
- 一些技术大牛的博客集锦(转)
- JS对大陆车牌照的归属地(省份和城市)加载和显示
- Fluorescent-PEG2000-Pyrene,荧光素和芘丁酸修饰的PEG,Pyrene-PEG2000-FITC
- 网站建设流程-面向公司
- 时间精力管理4象限法
- 湖南中职计算机考试练习题
- OSPF多区原理与配置
- DHCP服务器配置windows2016
- C语言中typeof作用,c语言中typeof关键字
- Ubuntu 11.04安装pcsx2模拟器简明过程
热门文章
- 云计算就业前景怎么样 学后可以胜任哪些岗位
- xp系统进不去2008服务器共享,xp系统设置访问Server 2008R2的共享不输入密码的方法...
- python docx创建表格
- 学习嵌入式单片机需要学习哪些内容?
- 怎么恢复服务器上刚刚删除的文件,怎样恢复刚刚删除的文件 详细教程分享【图解】...
- 泰戈尔专集:飞鸟集·新月集·园丁集(美冠纯美阅读书系·外国卷) 读后感
- Delicious Retouch 5—PS磨皮插件
- 互联网的寒冬是否只是以讹传讹?
- 涨姿势!2020最好的 10 大国外编程学习网站
- compositionstart、compositionend事件屏蔽拼音状态