2015-02-09 3 views
0

У меня есть следующий SUDO HTMLдоступ вложенных узлов в угловой директиве

<foo> 
    <span>Bar</span> 
</foo> 

директива:

myapp.directive('foo', function() { 
    return { 
     restrict: 'E', 
     replace: true, 
     transclude: true, 
     template: '<div><p>{{usedToBeInSpan}}</p></div>' 
    } 
}); 

Как извлечь содержимое вложенных span узла и установить его содержимое в директивах до usedToBeInSpan?

Обратите внимание, что я на самом деле не использовать это, чтобы заменить вложенный тег, это просто упрощенный пример

+0

вы должны создать 'функцию link' и извлечь все HTML содержимое из' 'span' с помощью .html()' и добавьте в ваш шаблон –

+0

@ArpitSrivastava Спасибо, см. Мой вопрос о ответе @ manasisakhare ... что я использую для функции '.html()'? – kontur

ответ

1

Вы можете добавить функцию ссылки в вашей директиве, как показано ниже:

myapp.directive('foo', function() { 
return { 
    restrict: 'E', 
    replace: true, 
    transclude: true, 
    template: '<div><p>{{usedToBeInSpan}}</p></div>', 
    link: function (scope, element, attrs) { 
      // the element argument contains the html content inside the directive tags <foo></foo> 
      scope.usedToBeInSpan = "";//populate from "element" 
    } 
} 
}); 
+0

Это точно, насколько я понимаю. Как мне получить/заполнить вложенные элементы внутри моей директивы? – kontur

+0

вы можете использовать традиционные методы HTML-элемента, которые вы можете найти по адресу: http://www.w3schools.com/jsref/dom_obj_all.asp или http://www.w3schools.com/jsref/prop_node_childnodes.asp –

+0

в ссылке функция, проверьте второй аргумент, это html «Элемент» –

0

Найденный новое решение. Угловой создает класс css, названный в честь содержимого директивы, например, «ng-< директива > -content», используя это, вы можете получить доступ к содержанию директивы, в которой оно было использовано. Посмотрите на эту скрипку:

https://jsfiddle.net/manasisakhare/8ezh35to/2/

myapp.directive('foo', function() { 
    return { 
     restrict: 'E', 
     //replace: true, 
     transclude: true, 
     template: '<div><p class="ng-foo-content" ng-transclude></p></div>' 
    } 
}); 
+0

Спасибо, это кажется интересным. Когда я запускаю скрипку, тег '' все еще обертывает правильно замененное содержимое. – kontur

Смежные вопросы