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

angular directive的簡單使用總結(jié)

 更新時間:2017年05月24日 10:05:39   作者:lincimy  
directive(指令)是angular的一個非常強大又有用的功能,它相當(dāng)于實現(xiàn)了組件化的概念,我們可以通過它公共地自定義DOM元素或CLASS類或ATTR屬性,并且在這基礎(chǔ)上進行操作scope、綁定事件等等

摘要

directive(指令)是angular的一個非常強大又有用的功能,它相當(dāng)于實現(xiàn)了組件化的概念。我們可以通過它公共地自定義DOM元素或CLASS類或ATTR屬性,并且在這基礎(chǔ)上進行操作scope、綁定事件等等。將一些公共的模塊或操作封裝到指令中,然后就可以在html頁面中編寫簡單的一行代碼就可以加載整個公共模塊,大大避免了代碼的冗余。一般使用directive有以下場景:

  1. 使html更具有語義化,不需要深入研究和了解邏輯即可知道頁面的大致邏輯;
  2. 抽象出一個自定義的組件,以便在其他地方可以進行復(fù)用。

下面我想通過一些實例結(jié)合分析對我所了解的directive進行一些簡單的歸納總結(jié)(我所使用的是angular1.5.3):

一、Directive的使用

angular.module("app",[]).directive("directiveName",function(){
return{
//通過設(shè)置項來定義
};
})

二、一個簡單的實例

html代碼:

<!DOCTYPE html>
<html ng-app='helloApp'>
 <body>
  <hello></hello>
 </body>

 <script src="js/angular.min.js"></script>
 <script src="js/helloDirective.js"></script>
</html>

js代碼:

var appModule = angular.module('helloApp', []);
appModule.directive('hello', function() {
 return {
  restrict: 'E',
  template: '<div>Hello,friends!</div>',
  replace: true
 };
});

效果截圖:


實例解析:

1、restrict:EACM的子集的字符串,它限制directive為指定的聲明方式。

  1. E - 元素名稱: <my-directive></my-directive>
  2. A - 屬性名:<div my-directive=”exp”></div>
  3. C - class名: <div class=”my-directive:exp;”></div>
  4. M - 注釋 : <!-- directive: my-directive exp -->

2、默認(rèn)情況下,directive將僅僅允許通過屬性聲明,ECA較常用。

template:指令顯示的模板內(nèi)容,一般由html標(biāo)簽和文本組成。通常情況下html內(nèi)容較簡單的情況下使用,模板內(nèi)容復(fù)雜的建議將公共部分抽離到html文件中,使用templateUrl屬性。

templateUrl - 與template基本一致,但模版通過指定的url進行加載。因為模版加載是異步的,所以compilation、linking都會暫停,等待加載完畢后再執(zhí)行。

3、replace:如果設(shè)置為true,那么模版將會替換當(dāng)前元素,而不是作為子元素添加到當(dāng)前元素中。(注:為true時,模版必須有一個根節(jié)點)

上述實例dom節(jié)點截圖:


三、實例2:關(guān)于transclude

修改上面實例代碼:

<!DOCTYPE html>
<html ng-app='helloApp' ng-controller="myController">
 <body>
  <hello>{{myName}}</hello>
 </body>

 <script src="js/angular.min.js"></script>
 <script src="js/helloDirective.js"></script>
</html>
var appModule = angular.module('helloApp', []);
appModule.directive('hello', function() {
 return {
  restrict: 'E',
  template: '<div>Hello,my name is <span ng-transclude></span></div>',
  replace: true,
  transclude:true
 };
});

效果截圖:


解析:

transclude:指令的作用是把我們自定義的語義化標(biāo)簽替換成瀏覽器能夠認(rèn)識的HTML標(biāo)簽。上述例子replace設(shè)置為true,模版將會替換當(dāng)前元素。而transclude設(shè)置為true的作用可以簡化地理解成:把<hello>標(biāo)簽替換成我們所編寫的HTML模板,但是<hello>標(biāo)簽內(nèi)部的內(nèi)容保持不變。而<span ng-transclude></span>則是指明標(biāo)簽內(nèi)部內(nèi)容插入到模板內(nèi)容的哪個位置。

四、實例3:關(guān)于compile,link和controller

實例代碼:

phonecatDirectives.directive('exampleDirective', function() { 
 return { 
  restrict: 'E', 
  template: '<p>Hello {{number}}!</p>', 
  controller: function($scope, $element){ 
   $scope.number = $scope.number + "22222 "; 
  }, 
  link: function(scope, el, attr) { 
   scope.number = scope.number + "33333 "; 
  }, 
  compile: function(element, attributes) { 
   return { 
    pre: function preLink(scope, element, attributes) { 
     scope.number = scope.number + "44444 "; 
    }, 
    post: function postLink(scope, element, attributes) { 
     scope.number = scope.number + "55555 "; 
    } 
   }; 
  } 
 } 
}); 

//controller.js添加 
dtControllers.controller('directive2',['$scope', 
 function($scope) { 
  $scope.number = '1111'; 
 } 
]); 

//html 
<body ng-app="phonecatApp"> 
 <div ng-controller="directive2"> 
  <example-directive></example-directive> 
 </div> 
</body>

運行結(jié)果:

Hello 1111 22222 44444 55555!

由結(jié)果可以看出來,controller先運行,compile后運行,link不運行。

將上例中的compile注釋掉的運行結(jié)果:

Hello 1111 22222 33333!

由結(jié)果可以看出來,controller先運行,link后運行,link和compile不兼容。

簡單解析:

指令的控制器和link函數(shù)(后面會講)可以進行互換。區(qū)別在于,控制器主要是用來提供可在指令間復(fù)用的行為但link鏈接函數(shù)只能在當(dāng)前內(nèi)部指令中定義行為,且無法再指令間復(fù)用。

更多了解可以參考Angular官方站點:https://angularjs.org/

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • AngularJS基礎(chǔ) ng-value 指令簡單示例

    AngularJS基礎(chǔ) ng-value 指令簡單示例

    本文主要介紹AngularJS ng-value 指令,這里對ng-value 的基礎(chǔ)資料做了整理,并附實例代碼,有需要的小伙伴可以參考下
    2016-08-08
  • 詳解如何在Angular中引入Mock.js

    詳解如何在Angular中引入Mock.js

    這篇文章主要為大家介紹了詳解如何在Angular中引入Mock.js實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 對angularJs中$sce服務(wù)安全顯示html文本的實例

    對angularJs中$sce服務(wù)安全顯示html文本的實例

    今天小編就為大家分享一篇對angularJs中$sce服務(wù)安全顯示html文本的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解angularjs獲取元素以及angular.element()用法

    詳解angularjs獲取元素以及angular.element()用法

    本篇文章主要介紹了詳解angularjs獲取元素以及angular.element()用法 ,具有一定的參考價值,有興趣的可以了解一下
    2017-07-07
  • Angularjs 實現(xiàn)分頁功能及示例代碼

    Angularjs 實現(xiàn)分頁功能及示例代碼

    這篇文章主要介紹了Angularjs 實現(xiàn)分頁功能及示例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • angular.bind使用心得

    angular.bind使用心得

    這篇文章主要介紹了angular.bind使用心得,以及個人對于angular.bind的理解,這里分享給大家,希望大家能夠喜歡。
    2015-10-10
  • AngularJS入門教程之學(xué)習(xí)環(huán)境搭建

    AngularJS入門教程之學(xué)習(xí)環(huán)境搭建

    這篇文章主要介紹了AngularJS入門教程之學(xué)習(xí)環(huán)境搭建,本教程將指導(dǎo)您完成一個簡單的應(yīng)用程序創(chuàng)建過程,包括編寫和運行單元測試、不斷地測試應(yīng)用,需要的朋友可以參考下
    2014-12-12
  • Angular組件庫ng-zorro-antd實現(xiàn)radio單選框選擇

    Angular組件庫ng-zorro-antd實現(xiàn)radio單選框選擇

    這篇文章主要為大家介紹了Angular組件庫ng-zorro-antd實現(xiàn)radio單選框取消選擇實現(xiàn)問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • AngularJS模塊詳解及示例代碼

    AngularJS模塊詳解及示例代碼

    本文主要講解AngularJS模塊的相關(guān)知識,這里整理了詳細(xì)的基礎(chǔ)資料,并提供示例代碼和示例實現(xiàn)效果圖,有興趣的小伙伴可以參考下
    2016-08-08
  • 關(guān)于Angular2 + node接口調(diào)試的解決方案

    關(guān)于Angular2 + node接口調(diào)試的解決方案

    這篇文章主要給大家介紹了關(guān)于Angular2 + node接口調(diào)試的解決方案,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05

最新評論

仁寿县| 若尔盖县| 襄垣县| 澄迈县| 瑞昌市| 万年县| 北宁市| 社旗县| 城步| 宜城市| 安龙县| 聊城市| 广州市| 略阳县| 涟水县| 闽侯县| 会同县| 龙川县| 汤阴县| 巴林右旗| 长宁县| 武平县| 元阳县| 墨竹工卡县| 鹤壁市| 富锦市| 札达县| 阳山县| 依兰县| 攀枝花市| 自治县| 拉萨市| 故城县| 洛扎县| 鄂托克旗| 南雄市| 山东| 隆回县| 廊坊市| 达日县| 阿合奇县|