Небольшой опыт демонстрирующий порядок инициализации директив.
важно
если используешь compile функция link несработает
если compile не использовать то сначало сработает controller зетем link
Если нечего не путаю то link это аналог compile post
В укороченной записи срабатывает именно link
myApp.directive('demo',function(){
return function(){
//я линк
}
});
собственно сам опыт
<!doctype html>
<html ng-app="myApp">
<head>
<script src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
<script language="javascript" type="text/javascript">
//Обьявим модуль
var myApp=angular.module('myApp', []);
//создадим дерективу
myApp.directive('demo',function(){
return {
//значит что это элемент, тоесть демо <demo>
restrict:"E",
//здесь можно установить связь атрбутов со свойствами scope
scope:{},
compile:function(){
alert("compile");
return{
pre:function($scope, $element, $attrs, $controller){
alert('pre');
},
post:function($scope, $element, $attrs, $controller){
alert('post');
}
}
},
link:function($scope,el,attrs,ctrl){
alert("link");
},
controller:function($scope){
alert("controller");
$scope.test="test";
},
template:"{{test}}{{test}}"
}
});
</script>
</head>
<body >
<demo>{{test}} </demo>
</body>
</html>