directive如何在angular中使用?很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、東港網(wǎng)站維護(hù)、網(wǎng)站推廣。一、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都會(huì)暫停,等待加載完畢后再執(zhí)行。
3、replace:如果設(shè)置為true,那么模版將會(huì)替換當(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)識(shí)的HTML標(biāo)簽。上述例子replace設(shè)置為true,模版將會(huì)替換當(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)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)建站的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、建站服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。