我有一个这样的设置:
>控制器c广播事件e
>指令d侦听e,并在e上通过append向DOM写入,并在这样做时创建指定指令d2的新元素。
IE:element.append(‘< directiveTwo ...>‘)
>指令二从不被Angular调用
>当我检查DOM(和调试)我看到Controller c和指令d正在做他们的工作,我有新的指令两个元素。
什么不见了?在动态创建这些元素后,需要做什么来触发directive 2调用?
请参阅
原文链接:https://www.f2er.com/angularjs/146097.html$compile
.您可以使用此服务与此类似:
var newDirective = angular.element('<div d2></div>'); element.append(newDirective); $compile(newDirective)($scope);
这将执行您的新元素的编译和链接,并将d2设置为动作。
然而,如果你能以某种方式重写你的原始指令,就像ng-repeat或ng-include这样的内置指令将为你执行编译和链接,你可能会发现它更简单,更有角度。
如果你的指令很简单,它可以在听到你的事件时添加一个数组,并指定一个模板
<div ng-repeat="evt in recordedEvents"> <div d2="evt"></div> </div>