2013-05-22 5 views
34

Я пытаюсь создать угловую директиву с шаблоном, но я также не хочу терять HTML внутри div. Например, вот как я хотел бы назвать свою директиву от HTML:Как передать HTML в угловую директиву?

<div my-dir> 
    <div class="contents-i-want-to-keep"></div> 
</div> 

Тогда есть моя директива:

app.directive('myDir', [ '$compile', function($compile) { 
return { 
    restrict: 'E', 
    link: function(scope, iElement, iAttrs){ 
     // assigning things from iAttrs to scope goes here 
    }, 
    scope: '@', 
    replace: false, 
    templateUrl: 'myDir.html' 
}; 
}]); 

, а затем есть myDir.html, где я определяю новый элемент:

<div class="example" style="background: blue; height: 30px; width: 30px"></div> 

Даже когда я установил заменить ложь, я теряю внутреннее содержание-я-хочу-к-держать дел - мое понимание угловых Docs было то, что это будет добавляться после моего шаблона. Есть ли способ сохранить это (возможно, через мою функцию связывания?), Чтобы результат был

<div class="example" style="background: blue; height: 30px; width: 30px"> 
    <div class="contents-i-want-to-keep"></div> 
</div> 

Спасибо!

+2

вы должны сделать translude: правда и использование нг-transclude сохранить внутренний DIV –

+0

@Ajaybeniwal Спасибо! –

ответ

48

Вы должны будете использовать ng-transclude, добавьте transclude: true в настройках директивы, и добавьте ng-transclude в шаблон:

<div class="example" style="…" ng-transclude></div>` 

Это plunkr есть пример того, как использовать нг-transclude с шаблоном, чтобы сохраните исходный элемент dom.

http://plnkr.co/edit/efyAiTmcKjnhRZMTlNGf

+0

Он работает! Спасибо! –

+2

@ Николь, пожалуйста, отметьте принятый ответ. –

+0

Что из этой версии Angular совместимо? – MarzSocks

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