Как повторить и отобразить массив пользовательских директив в другой пользовательской директиве?

У меня есть три пользовательских директивы child1, child2, child3, и я хочу повторить из контроллера в ng-repeat, используя другую пользовательскую директиву.

1 ответ

Возьмите массив в контроллере и создайте родительскую пользовательскую директиву и передайте каждый элемент массива родительской директиве, а затем в родительской директиве просто скомпилируйте с $compile и добавьте в DOM.

контроллер:

$scope.directiveArray=['child1','child2','child3'];

Родительская директива:

angular.module('myApp').directive('parentDirective',function($compile){
   return {
            restrict:'AE',
            replace:true,
            link:function(scope,element,attribute){<br>
            var html=$compile("<"+attribute.childelem+"></"+attribute.childelem+">")(scope);
            element.append(html);
         }
       }
    });

Другие три директивы:

angular.module('myApp').directive('child1',function(){
  return {
           restrict:'AE',
           template:'<h1>this is Child 1'
         }
    });

angular.module('myApp').directive('child2',function(){
  return {
           restrict:'AE',
           template:'<h1>this is Child 2'
         }
    });
angular.module('myApp').directive('child3',function(){
  return {
           restrict:'AE',
           template:'<h1>this is Child 3'
         }
       });

HTML:

<div ng-repeat="elem in directiveArray">
    <parent-directive childelem="{{elem}}"><parent-directive>
</div>
Другие вопросы по тегам