最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用AngularJS的指令實(shí)現(xiàn)tabs切換效果

 更新時(shí)間:2016年08月31日 14:36:35   作者:MakingChoice  
這篇文章介紹的是寫一個(gè)通過指令嵌套實(shí)現(xiàn)tabs功能的指令模塊,這也是我在一個(gè)項(xiàng)目中應(yīng)用到的,現(xiàn)在分享給大家,有需要的可以參考借鑒。

先來看看效果圖

首先先來說一下指令嵌套,指令嵌套顧名思義就是兩個(gè)以上的指令嵌套在一起,比如下面這樣:

<A-deirective>
  <B-directive></B-directive>
  <C-directive></C-directive>
</A-directive>

下面這個(gè)tabs功能的指令,剛好用到了這個(gè),可以讓代碼更加簡(jiǎn)潔。

<!DOCTYPE html>
<html lang="en" ng-app="docsTabsExample">
<head>
 <meta charset="UTF-8">
 <title></title>
 <script></script>
 <script src="lib/angular.min.js" type="text/javascript"></script>
 <script src="lib/angular-route.js" type="text/javascript"></script>
 <script src="lib/jquery-2.1.4.min.js"></script>
 <script src="lib/bootstrap.js" type="text/javascript"></script>
 <link rel="stylesheet" href="css/bootstrap.css" type="text/css"/>
 <style>
 .active{
  background: red;
 }
 </style>
</head>
<body ng-controller="appCon">
 <my-tabs><!--最外層指令-->
 <my-pane tittle="ONE"><!--內(nèi)層指令-->
  <h4>One</h4>
  <p>angularangularangularangularangularangularangular</p>
 </my-pane>
 <my-pane tittle="TWO"><!--內(nèi)層指令-->
  <h4>Two</h4>
  <p>angularangularangularangularangularangularangular</p>
 </my-pane>
 <my-pane tittle="THERE"><!--內(nèi)層指令-->
  <h4>There</h4>
  <p>bootstrapbootstrapbootstrapbootstrapbootstrapbootstrap</p>
 </my-pane>
 <my-pane tittle="FIVE"><!--內(nèi)層指令-->
  <h4>five</h4>
  <p>jqueryjqueryjqueryjqueryjqueryjqueryjquery</p>
 </my-pane>
 </my-tabs>
</body>
<script>

 var app=angular.module("docsTabsExample",['template'])
   .controller("appCon",["$scope",function($scope){

   }])
   .directive("myTabs", function () {
    return{
    restrict:"EA",
    transclude: true,
    scope:{},
    templateUrl:"myTabs.html",
    controller:["$scope", function ($scope) {//使用controller讓最內(nèi)層指令來繼承外層指令,這樣內(nèi)層就可以通過scope的傳導(dǎo),來與外層指令進(jìn)行數(shù)據(jù)之間的傳遞
     var panes = $scope.scopes = [];//

     $scope.select= function (pane) {//實(shí)現(xiàn)tabs功能
     angular.forEach(panes, function (scope) { //遍歷所有內(nèi)存指令scope,統(tǒng)一隱藏內(nèi)容。
      scope.selected=false;
     });
     pane.selected=true;//通過ng-repeat只
     };

     this.addScope= function (scope) {//由內(nèi)層指令來繼承,把內(nèi)層指令的scope,傳到進(jìn)外層指令進(jìn)行控制
     if(panes.length===0){
      $scope.select(scope);
     }
     panes.push(scope);//把內(nèi)層指令數(shù)組,傳入外層指令scope數(shù)組。
     }
    }]
    }
   })
   .directive("myPane", function () {
    return{
    restrict:'EA',
    scope:{
     tittle:'@'
    },
    transclude: true,
    require:'^myTabs',//繼承外層指令
    templateUrl:"myPane.html",
    link: function (scope, elemenet,attrs,myTabsController) {
     myTabsController.addScope(scope);//把內(nèi)層指令的scope存入到外層指令中,讓外層遍歷。
    }
    }
   });
 angular.module("template",[])
   .run(["$templateCache", function ($templateCache) {
    $templateCache.put("myTabs.html","<div class='table'>" +
      "<ul class='nav nav-tabs'>" +
      "<li ng-repeat='pane in scopes' ng-class='{active:pane.selected}'>" +
       "<a href='#' ng-click='select(pane)'>{{pane.tittle}}<a/>" +
      "</li>" +
      "</ul>" +
      "<div ng-transclude class='tab-content'></div>" +
      "</div>")
   }])
   .run(["$templateCache", function ($templateCache) {
    $templateCache.put("myPane.html","<div class='table-pane' ng-show='selected' ng-transclude>" +
      "</div>")
   }])

</script>
</html>

整個(gè)指令的的實(shí)現(xiàn)原理就是通過指令的繼承,把內(nèi)層指令的scope暴露到外層指令中,這樣就可以在外層指令控制內(nèi)層指令的顯示。這里還有另外一個(gè)要說明的,為了讓指令更加有層次,更加有邏輯性,使用了ng-transclude,讓指令的template內(nèi)容,反向插入到標(biāo)有ng-transclude的內(nèi)容中。

結(jié)束語

好了,以上就是AngularJS通過指令實(shí)現(xiàn)tabs切換功能的全部?jī)?nèi)容,大家都學(xué)會(huì)了嗎?希望對(duì)大家學(xué)習(xí)AngularJS能有所幫助,如果有疑問可以留言交流。謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • AngularJS基礎(chǔ) ng-srcset 指令簡(jiǎn)單示例

    AngularJS基礎(chǔ) ng-srcset 指令簡(jiǎn)單示例

    本文主要介紹AngularJS ng-srcset 指令,這里對(duì)ng-srcset 指令做了詳細(xì)的資料整理,附有代碼示例,有需要的小伙伴可以參考下
    2016-08-08
  • 使用Chrome瀏覽器調(diào)試AngularJS應(yīng)用的方法

    使用Chrome瀏覽器調(diào)試AngularJS應(yīng)用的方法

    這篇文章主要介紹了使用Chrome瀏覽器調(diào)試AngularJS應(yīng)用的方法,AngularJS是非常熱門的JavaScript庫,需要的朋友可以參考下
    2015-06-06
  • Angular4表單驗(yàn)證代碼詳解

    Angular4表單驗(yàn)證代碼詳解

    這篇文章主要介紹了Angular4表單驗(yàn)證代碼詳解 ,需要的朋友可以參考下
    2017-09-09
  • Angular.Js的自動(dòng)化測(cè)試詳解

    Angular.Js的自動(dòng)化測(cè)試詳解

    當(dāng)Angular項(xiàng)目的規(guī)模到達(dá)一定的程度,就需要進(jìn)行測(cè)試工作了。為什么要自動(dòng)化測(cè)試?1,提高產(chǎn)出質(zhì)量。2,減少重構(gòu)時(shí)的痛。反正我最近重構(gòu)多了,痛苦經(jīng)歷多了。3,便于新人接手。下面這篇文章就給大家詳細(xì)介紹了Angular.Js的自動(dòng)化測(cè)試,有需要的朋友們可以參考借鑒。
    2016-12-12
  • 深入學(xué)習(xí)AngularJS中數(shù)據(jù)的雙向綁定機(jī)制

    深入學(xué)習(xí)AngularJS中數(shù)據(jù)的雙向綁定機(jī)制

    這篇文章主要介紹了AngularJS中數(shù)據(jù)的雙向綁定機(jī)制,雙向綁定使得HTML中呈現(xiàn)的view與AngularJS中的數(shù)據(jù)一致,是Angular的重要特性之一,需要的朋友可以參考下
    2016-03-03
  • 詳解AngularJS 過濾器的使用

    詳解AngularJS 過濾器的使用

    AngularJS 過濾器可用于轉(zhuǎn)換數(shù)據(jù),這篇文章主要介紹了詳解AngularJS 過濾器的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • angularjs中判斷ng-repeat是否迭代完的實(shí)例

    angularjs中判斷ng-repeat是否迭代完的實(shí)例

    今天小編就為大家分享一篇angularjs中判斷ng-repeat是否迭代完的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解angularjs 學(xué)習(xí)之 scope作用域

    詳解angularjs 學(xué)習(xí)之 scope作用域

    本篇文章主要介紹了詳解angularjs 學(xué)習(xí)之 scope作用域,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • 詳解angular2如何手動(dòng)點(diǎn)擊特定元素上的點(diǎn)擊事件

    詳解angular2如何手動(dòng)點(diǎn)擊特定元素上的點(diǎn)擊事件

    這篇文章主要介紹了詳解angular2如何手動(dòng)點(diǎn)擊特定元素上的點(diǎn)擊事件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • AngularJS 打開新的標(biāo)簽頁實(shí)現(xiàn)代碼

    AngularJS 打開新的標(biāo)簽頁實(shí)現(xiàn)代碼

    本文通過實(shí)例代碼給大家介紹了angularJS 打開新的標(biāo)簽頁方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09

最新評(píng)論

都兰县| 新化县| 黄陵县| 松滋市| 黔南| 土默特右旗| 哈尔滨市| 扬州市| 鞍山市| 景宁| 长春市| 张北县| 兴安盟| 育儿| 壤塘县| 内乡县| 吴桥县| 汉源县| 宣恩县| 巴东县| 新巴尔虎左旗| 当涂县| 高邑县| 军事| 抚州市| 五家渠市| 大理市| 溧水县| 织金县| 化德县| 炎陵县| 响水县| 武胜县| 维西| 阿荣旗| 丰顺县| 崇信县| 杭锦后旗| 武夷山市| 高阳县| 泸定县|