Si j'inscrit deux directives différentes avec le même nom dans deux modules, la dernière inscription gagnera-t-elle?

Dans AngularJS, si j'inscrit deux directives différentes avec le même nom dans deux modules, la dernière inscription gagnera-t-elle? Les modules angulaires IIUC ne fournissent aucun espace de noms.

En outre, les modules dans Angular fournissent-ils autre chose que le regroupement pratique de la configuration de l'injecteur?

Autrement dit, pouvez-vous détecter au moment de l'exécution de quel module quelque chose (dire une directive) est-il issu?

Edit: re la première partie de cette question: je le pense. Https://docs.angularjs.org/guide/module

AngularJS, si j'registre deux directives différentes avec le même nom dans deux modules, la dernière inscription gagnera-t-elle?

Ce sera un «lien». Les deux sont enregistrés et les deux sont exécutés. L'ordre d'exécution pour les directives ayant la même priority est le même que l'ordre dans lequel elles ont été définies, et les fonctions de link seront exécutées dans l'ordre inverse (voir plus sur l'ordre de compilation ici ).

S'ils ne remplissent pas certaines conditions, c'est-à-dire

  • Plusieurs directives demandant une portée isolée.
  • Plusieurs directives publiant un contrôleur sous le même nom.
  • Directives multiples déclarées avec l'option de transclusion.
  • Plusieurs directives tentant de définir un modèle ou templateURL.

, Une erreur respective est lancée. Notez que la documentation est inexacte sur «portée isolée», c'est une «nouvelle portée» en fait, à la fois simultanée scope: true et scope: { ... } sont interdits. Une portée maximale par élément.

Autrement dit, pouvez-vous détecter au moment de l'exécution de quel module quelque chose (dire une directive) est-il issu?

Non, non sans piratage Angulaire. Mais l'erreur multidir vous indiquera les noms de module s'il y a des collisions de directive.