Transclude é uma configuração para dizer ao angular para capturar tudo o que é colocado dentro da diretiva na marcação e usá-lo em algum lugar (Onde realmente ng-transclude
está) no modelo da diretiva. Leia mais sobre isso na seção Criando uma diretiva que envolve outros elementos na documentação de diretivas .
Se você escreve uma diretiva personalizada, usa ng-transclude no modelo de diretiva para marcar o ponto em que deseja inserir o conteúdo do elemento
angular.module('app', [])
.directive('hero', function () {
return {
restrict: 'E',
transclude: true,
scope: { name:'@' },
template: '<div>' +
'<div>{{name}}</div><br>' +
'<div ng-transclude></div>' +
'</div>'
};
});
Se você colocar isso na sua marcação
<hero name="superman">Stuff inside the custom directive</hero>
Apareceria como:
Super homen
Coisas dentro da diretiva personalizada
Exemplo completo:
Index.html
<body ng-app="myApp">
<div class="AAA">
<hero name="superman">Stuff inside the custom directive</hero>
</div>
</body>
jscript.js
angular.module('myApp', []).directive('hero', function () {
return {
restrict: 'E',
transclude: true,
scope: { name:'@' },
template: '<div>' +
'<div>{{name}}</div><br>' +
'<div ng-transclude></div>' +
'</div>'
};
});
Output markup
Visualize: