AngularJS – dynamic创build指定指令的元素

我有这样的设置:

  • 控制器c广播事件e
  • 指令d监听e ,然后通过append写入到DOM中,这样就创build了指定指令d2新元素。

IE: element.append('<directiveTwo ...>')

  • Angular从不叫Angth指令
  • 当我检查DOM(和debugging),我看到控制器c和指令d正在做他们的工作,我有新的directiveTwo要素。

什么不见​​了? dynamic创build这些元素后,需要做些什么来触发指令2调用?

请参阅$compile 。 你可以像这样使用这个服务:

 var newDirective = angular.element('<div d2></div>'); element.append(newDirective); $compile(newDirective)($scope); 

这将执行你的新元素的编译和链接,并设置d2行动。

然而,如果你可以按照其他内置指令(如ng-repeatng-include来重写你的原始指令,那么你可能会发现它更简单和更有angular度,它将为你执行编译和链接。

如果您的指令足够简单,那么在听到您的事件时可以按照添加到数组的方式做一些事情,并指定一个模板

 <div ng-repeat="evt in recordedEvents"> <div d2="evt"></div> </div>