这个问题探讨了如何创建一个包装器 AngularJS 指令,向其元素添加其他指令被应用于.目标是在尝试添加然后使用 $compile 编译新指令时避免无限循环。
提供的解决方案采用以下步骤:
优先级和终端设置:
指令编译:
<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>
这种方法提供了一个强大的解决方案,可以从包装器指令中合并多个指令,同时避免出现无限循环的可能性。优先级和终止属性对于实现所需的行为至关重要,并且在修改元素后删除包装器指令的属性以防止进一步编译也很重要。
以上是在 AngularJS 中从包装指令添加指令时如何避免无限循环?的详细内容。更多信息请关注PHP中文网其他相关文章!