AngularJS - 动态创建指定指令的元素

时间:2013-11-17 00:04:51

标签: angularjs angularjs-directive

我有这样的设置:

  • 控制器c广播事件e
  • 指令d侦听e,并在e上通过追加写入DOM,并在此过程中创建指定指令d2的新元素。

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

  • Angular
  • 永远不会调用指令two
  • 当我检查DOM(和调试)时,我看到Controller c和指令d正在执行他们的工作,我有新的directiveTwo元素。

缺少什么?在动态创建这些元素之后需要做些什么才能触发指令2

1 个答案:

答案 0 :(得分:90)

$compile。您可以使用此服务:

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

这将执行新元素的编译和链接,并将d2设置为操作。

但是,如果您可以按照ng-repeatng-include之类的其他内置指令重写原始指令,那么您可能会发现它更简单,更有棱角。它会为您执行编译和链接。< / p>

如果您的指令足够简单,它可以在听到您的事件时执行添加到数组的操作,并指定一个模板,如

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