banderos120
@banderos120
Играю на балалайке

Как получить доступ к дочерним элементам в директиве?

Здравствуйте.
Собственно вопрос : "Как получить доступ к дочерним элементам в директиве ?".
Что есть :
<div class="list" my-directive>
     <div class="item"></div>
     <div class="item"></div>
     <div class="item"></div>
</div>


angular.module('MyModule').directive('myDirective', function(){
     return {
          restrict : 'A',
          scope : {}, // В рабочей версии нужны будут параметры
          link : function(scope, el){
               console.dir(el.children()); //Возвращает div.directive-div из template
          },
          compile : function(){
               return {
                    pre : function preLink(scope, el){
                         console.dir(el.children()); // Возвращает div.directive-div
                    }
               };
          },
          template : '<div class="directive-div"></div>'
     };
});

А хотелось бы получить список дочерних дивов div.item . Что не так делаю ?
  • Вопрос задан
  • 327 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну так вы всю ноду заменяете на темплейт.

Если вы хотите сохранить содержимое - используйте transclude
Ответ написан
@kostiknoir
angular
  .module('app', [])
  .directive('myDirective', function() {
    return {
      restrict: 'A',
      scope: {},
      link: function(scope, el) {
        var childItems = el[0].querySelectorAll('.item');
        childItems = Array.prototype.slice.call(childItems);

        childItems.forEach(function(node) {
          console.log(node);
        });
      },
      transclude: true,
      template: '<div class="directive-div" ng-transclude></div>'
    };
  });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы