Функциональность угловой директивы перед цепочкой возврата и компиляции
Можно выполнить javascript в директиве перед возвратом чего-либо, а также на этапе компиляции директивы перед возвратом чего-либо:
angular.module('foo').directive('fooDirective', [function(){
console.debug('before return');
return {
restrict: 'E',
controller: function($scope){
console.debug('controller');
},
compile: function(scope, elem){
console.debug('compile');
return {
pre: function(scope,elem, attr){
console.debug('pre');
},
post: function(scope,elem,attr){
console.debug('post');
}
}
}
}
}]);
<body ng-app="foo">
<foo-directive></foo-directive>
<foo-directive></foo-directive>
</body>
Это производит следующий порядок журнала консоли:
before return
compile
compile
controller
pre
post
controller
pre
post
У меня есть несколько вопросов по этому поводу:
1) Зачем мне запускать код перед возвратом действительного объекта директивы? Каким будет сценарий использования?
2) Зачем мне запускать код перед возвратом функций ссылки до / после? Чем шаг предварительной ссылки отличается от шага компиляции? Что такое вариант использования?
3) Почему компиляция выполняется дважды подряд, когда есть два элемента, тогда как все остальное выполняется итеративно в том же порядке, независимо от количества элементов?
1 ответ
Вы хотели бы сделать это, чтобы иметь некоторые частные определения методов, которые может использовать только ваш объект.
Вы могли бы сделать это, если бы вы использовали какую-то прекомпиляцию службы, чтобы получить данные для директивы, и после компиляции использовать данные и что-то с ними делать.
Без понятия
Я думаю, что происходит странное пузырение.
потому что у вас есть только два экземпляра вашей директивы.
Вот что я вижу в журнале консоли:
before return
compile
compile
controller
pre
post
controller
pre
post