详解如何将angular-ui的图片轮播组件封装成一个指
网络编程 2021-07-04 18:32www.168986.cn编程入门
本篇文章主要介绍了如何将angular-ui的图片轮播组件封装成一个指令 ,长沙网络推广觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随长沙网络推广过来看看吧
在项目开发中我们经常会遇到图片轮播的功能点
如果我们开发人员自己原生手写,将会花费很多的时间,最终得不偿失。
接下来就详细说说如何使用angular-ui发热图片轮播模块,并且将它写成一个指令(便于复用)
一如既往的我们项目中使用时requireJS进行js代码的编译
准备工作:
1):引入angularJS , ui-bootstrap-tpls-1.3.2(我使用的是1.3.2版本的)
第一步自己写一个指令(命名为pihange)
说明指令控制器中的代码都是angualr-ui官网上拷贝的(因为此文章的重点是如何将其封装成指令,其他的不做重点)
指令的js代码
define(['app'],function(myapp){ myapp.directive('pihange',[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,//图片的url text: $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 below function 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./questions/962802#962890 function shuffle(array) { var tmp, current, = array.length; if () { while (--) { current = Math.floor(Math.random() ( + 1)); tmp = array[current]; array[current] = array[]; array[] = tmp; } } return array; } }], templateUrl:'js/directives/pihange/pihange.html',//轮播的页面 link:function(s,e,attrs){ }, } }]); });
好了上面的代码都是拷贝来的,不做解释
轮播模块的html:(pihange.html),指令的html(这个没啥理解的)
指令的html
<div> <div style="height: 305px;"> <uib-carousel no-wrap="noWrapSlides" interval="myInterval" active="active"> <uib-slide index="slide.id" ng-repeat="slide in slides track by slide.id"> <img style="margin: auto;" ng-src="{{slide.image}}"> <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 class="btn btn-info" type="button" ng-click="addSlide()">Add Slide</button> <button class="btn btn-info" type="button" 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 class="form-control" type="number" ng-model="myInterval"> <br>Enter a negative number or 0 to s the interval. </div> </div> </div>
到此为止关于指令的封装已经完成,接下来是如何使用的问题
(1)有一个页面要用到此指令(命名为test.html)
<p>图片的轮播</p> <div picurl="img" pihange=""></div><!--img是用来传递参数的-->
test.html对应的控制器(idea_test_ctrl)
define(['app','directives/pihange/pihange'],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的地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程