AngularJS – Criando elementos dinamicamente que especificam diretivas

Eu tenho uma configuração como esta:

  • Controlador c transmite evento e
  • A Diretiva d ouve e , e em e , grava no DOM via append e, ao fazê-lo, cria novos elementos que especificam uma diretiva d2 .

IE: element.append('')

  • A two directiva nunca é chamada pelo Angular
  • Quando eu inspeciono o DOM (e depuro), vejo que o Controlador c e a diretiva d estão fazendo seus trabalhos, e eu tenho novos elementos directiveTwo .

O que está faltando? O que precisa ser feito para acionar a chamada da diretiva 2 depois de criar dinamicamente esses elementos?

Veja $compile . Você pode usar esse serviço da mesma forma:

 var newDirective = angular.element('
'); element.append(newDirective); $compile(newDirective)($scope);

Isso executará a compilation e vinculação de seu novo elemento e definirá d2 em ação.

No entanto, você pode achar mais simples e mais angular se puder rewrite de alguma forma sua diretiva original em termos de outras diretivas ng-repeat como ng-repeat ou ng-include que executarão a compilation e o link para você.

Se a sua diretiva for simples o suficiente, ela poderia fazer algo ao longo das linhas de adição a uma matriz ao ouvir seu evento e especificar um modelo como