Ajouter les directives de la directive en AngularJS

Je suis en train de construire une directive qui prend soin de l'ajout de plus de directives de l'élément, il est déclaré sur.
Par exemple, je veux construire une directive qui prend soin d'ajouter datepicker, datepicker-language et ng-required="true".

Si j'essaie d'ajouter des attributs et ensuite utiliser $compile j'ai évidemment générer une boucle infinie, donc je vérifie si j'ai déjà ajouté les attributs requis:

angular.module('app')
  .directive('superDirective', function ($compile, $injector) {
    return {
      restrict: 'A',
      replace: true,
      link: function compile(scope, element, attrs) {
        if (element.attr('datepicker')) { //check
          return;
        }
        element.attr('datepicker', 'someValue');
        element.attr('datepicker-language', 'en');
        //some more
        $compile(element)(scope);
      }
    };
  });

Bien sûr, si je n'ai pas $compile les éléments, les attributs seront ensemble, mais la directive ne sera pas démarré.

Cette approche est-elle correcte ou suis-je tout faux? Est-il un meilleur moyen d'atteindre le même comportement?

UDPATE: compte tenu du fait que $compile est la seule façon d'atteindre cet objectif, il est un moyen de sauter la première compilation pass (l'élément peut contenir plusieurs enfants)? Peut-être par la mise en terminal:true?

Mise à JOUR 2: j'ai essayé de mettre la directive en un select élément et, comme prévu, la compilation se déroule deux fois, ce qui signifie qu'il est deux fois le nombre de options.

InformationsquelleAutor frapontillo | 2013-10-07