My apologies I had run it previously with only one element, the actual
console debug output is:
before return
compile
compile
controller
pre
post
controller
pre
post
and points 4 and 5 are moot
On Tuesday, April 8, 2014 5:27:39 PM UTC-7, abe wrote:
>
> It is possible to run javascript in a directive before returning anything,
> as well as in a directive's compile step before returning anything:
>
> 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>
>
> This produces the following console log order:
>
> before return
> compile
> controller
> pre
> post
> before return
> compile
> compile
> controller
> pre
> post
> controller
> pre
> post
>
> I have several questions about this:
>
> 1) Why would I ever want to run code before returning the actual directive
> object? What would be a usecase?
>
> 2) Why would I ever want to run code before returning the pre/post link
> functions? How is the prelink step different from the compile step? What is
> a use case?
>
> 3) Why does compile run twice in succession when there is two items, while
> everything else runs iteratively in the same order irrelevantly of number
> of elements?
>
> 4) Why does everything except "before return" run three times? Shouldn't
> everything only run twice?
>
> 5) (Corollary to 4 really) Why does before return only run twice?
>
> Plunk: http://plnkr.co/edit/1JPYLcPlMerXlwr0GnND?p=preview
>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.