Cette question explore comment créer une directive wrapper AngularJS qui ajoute des directives supplémentaires à l'élément qu'elle contient est appliqué à. L'objectif est d'éviter une boucle infinie lors de la tentative d'ajout puis de compilation des nouvelles directives à l'aide de $compile.
La solution fournie utilise les étapes suivantes :
Paramètres de priorité et de terminal :
Compilation de directives :
<code class="javascript">angular.module('app') .directive('commonThings', function ($compile) { return { restrict: 'A', replace: false, terminal: true, priority: 1000, link: function (scope, element, attrs) { element.attr('tooltip', '{{dt()}}'); element.attr('tooltip-placement', 'bottom'); element.removeAttr("common-things"); // Remove the wrapper directive's attribute element.removeAttr("data-common-things"); // Also remove the same attribute with data- prefix $compile(element)(scope); } }; });</code>
Cette approche fournit une solution robuste pour incorporer plusieurs directives à partir d'une directive wrapper tout en évitant le potentiel de boucles infinies. Les propriétés de priorité et de terminal sont cruciales pour obtenir le comportement souhaité, et il est important de supprimer l'attribut de la directive wrapper après avoir modifié l'élément pour empêcher une compilation ultérieure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!