0

何かを返す前にディレクティブで 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) 要素の数に関係なく、他のすべてが同じ順序で繰り返し実行されるのに、2 つの項目がある場合にコンパイルが 2 回続けて実行されるのはなぜですか?

プランク: http://plnkr.co/edit/1JPYLcPlMerXlwr0GnND?p=preview

4

1 に答える 1