directive如何在angular中使用?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括洛隆網(wǎng)站建設(shè)、洛隆網(wǎng)站制作、洛隆網(wǎng)頁制作以及洛隆網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,洛隆網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到洛隆省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
一、Directive的使用
angular.module("app",[]).directive("directiveName",function(){ return{ //通過設(shè)置項(xiàng)來定義 }; })
二、一個(gè)簡單的實(shí)例
html代碼:
js代碼:
var appModule = angular.module('helloApp', []); appModule.directive('hello', function() { return { restrict: 'E', template: 'Hello,friends!', replace: true }; });
效果截圖:
實(shí)例解析:
1、restrict:EACM的子集的字符串,它限制directive為指定的聲明方式。
E - 元素名稱:
A - 屬性名:
C - class名:
M - 注釋 :
2、默認(rèn)情況下,directive將僅僅允許通過屬性聲明,ECA較常用。
template:指令顯示的模板內(nèi)容,一般由html標(biāo)簽和文本組成。通常情況下html內(nèi)容較簡單的情況下使用,模板內(nèi)容復(fù)雜的建議將公共部分抽離到html文件中,使用templateUrl屬性。
templateUrl - 與template基本一致,但模版通過指定的url進(jìn)行加載。因?yàn)槟0婕虞d是異步的,所以compilation、linking都會暫停,等待加載完畢后再執(zhí)行。
3、replace:如果設(shè)置為true,那么模版將會替換當(dāng)前元素,而不是作為子元素添加到當(dāng)前元素中。(注:為true時(shí),模版必須有一個(gè)根節(jié)點(diǎn))
上述實(shí)例dom節(jié)點(diǎn)截圖:
三、實(shí)例2:關(guān)于transclude
修改上面實(shí)例代碼:
{{myName}} var appModule = angular.module('helloApp', []); appModule.directive('hello', function() { return { restrict: 'E', template: 'Hello,my name is', replace: true, transclude:true }; });
效果截圖:
解析:
transclude:指令的作用是把我們自定義的語義化標(biāo)簽替換成瀏覽器能夠認(rèn)識的HTML標(biāo)簽。上述例子replace設(shè)置為true,模版將會替換當(dāng)前元素。而transclude設(shè)置為true的作用可以簡化地理解成:把
四、實(shí)例3:關(guān)于compile,link和controller
實(shí)例代碼:
phonecatDirectives.directive('exampleDirective', function() { return { restrict: 'E', template: 'Hello {{number}}!
', 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
運(yùn)行結(jié)果:
Hello 1111 22222 44444 55555!
由結(jié)果可以看出來,controller先運(yùn)行,compile后運(yùn)行,link不運(yùn)行。
將上例中的compile注釋掉的運(yùn)行結(jié)果:
Hello 1111 22222 33333!
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。