Ух... включаю режим телепата.
У вас предположим есть такой код:
angular.module('app', [])
.directive('foo', function () {
return function (scope, el, attr) {
el.append('<div bar></div>');
}
}
.directive('bar', function () {
return function (scope, el, attr) {
console.log('init bar directive');
}
});
есть такой шаблон
<div ng-app="app">
<div foo></div>
</div>
И при запуске приложения мы в консольке не видим нашего консоль лога и расстраиваемся.
А почему так? а потому что angular не отслеживает появление/удаления новых элементов сам по себе, и не пытается на каждый чих искать директивы. Для этого его нужно попросить собрать директиву.
angular.directive('foo', function ($compile) {
return function (scope, el, attr) {
var child = $compile('<div bar></div>')(scope);
el.append(child);
}
});
Если вам нужно при инициализации директивы это добро делать, проще вынести в template директивы и тогда angular все сам будет делать, так как он внутри всеравно будет делать $compile.
Подробнее тут:
https://docs.angularjs.org/api/ng/service/$compile