這篇文章隻是介紹,加深了解,這裡有篇例子的部落格寫的不錯,感興趣的可以看看
http://damoqiongqiu.iteye.com/blog/1917971
作用:自定義html中的元件(說白了就是各個頁面片互相粘來粘去)
看下代碼:
var directives = angular.module('demo.directives', []);
directives.directive('customDirective', function() {
return {
restrict: 'ECMA',
template: '<nav></nav>',
templateUrl: 'directive.html',
replace: false,
transclude: false,
scope: false,
controller:directiveController(fn),
link: function(scope, element, attrs) {
}
};
})
restrict:
指定了directive的使用形式,共有四種:
template和templateUrl:
用于指定directive對應的模闆,前者直接使用字元串定義模闆,而後者則通過url連結外部模闆檔案。(2選1)
replace:
指定是否使用模闆替換directive作用的DOM元素。
transclude:
用于控制是否要将該directive的子元素添加到模闆中ng-tranclude指定的元素之下
scope:
用于指定目前directive所對應的scope,不同的取值之間的影響非常大。
- false:此時directive與父元素共享scope
- true:此時directive有自己的scope,該scope繼承父元素所對應的scope
- isolate:directive有自己的scope,該scope不會繼承自父元素對應的scope,但是仍然可以通過scope.$parent通路父節點的scope。這不是一個推薦的做法,因為這樣就對父元素進行了限制,影響了directive的使用範圍。
-
如果想在父子元素之間共享資料,可以明确指定那些元素需要父子之間共享。方法共有三種:
使用@将父級scope中的屬性綁定到本地scope中,單向綁定,這個值總是字元串,在template中需要使用{{}}
使用=同上,隻不過這裡是雙向綁定,在template中可以直接給出父級scope的屬性名稱
使用&用于倒入函數或者表達式
controller
directive對應的controller,通常用于directive之間的通信。
link:
此函數的主要作用就是對DOM和scope做資料綁定。在這個函數中,可以通路scope了。
還有些不常用的參數:
terminal
require
priority
compile
樓主就不在這裡介紹了,需要的請自行百度。