国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解如何將angular-ui的圖片輪播組件封裝成一個指令

2019-11-19 16:37:41
字體:
來源:轉載
供稿:網友

在項目開發中我們經常會遇到圖片輪播的功能點:

如果我們開發人員自己原生手寫,將會花費很多的時間,最終得不償失。

接下來就詳細說說如何使用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,//圖片的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.com/questions/962802#962890        function 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 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 stop the interval.    </div>  </div></div>  

到此為止關于指令的封裝已經完成,接下來是如何使用的問題:

(1)有一個頁面要用到此指令:(命名為test.html)

<p>圖片的輪播</p><div picurl="img" picchange=""></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/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广南县| 巴塘县| 曲周县| 梁平县| 淮北市| 垦利县| 雷山县| 高密市| 曲周县| 文昌市| 徐汇区| 萝北县| 香河县| 特克斯县| 南丹县| 格尔木市| 浙江省| 雅江县| 乌拉特后旗| 尚义县| 卓尼县| 石首市| 西城区| 五寨县| 左权县| 教育| 通州区| 醴陵市| 临汾市| 鄯善县| 上蔡县| 北宁市| 岗巴县| 金溪县| 尚义县| 门源| 小金县| 河池市| 兴城市| 台安县| 五河县|