Transclude - это параметр, который указывает angular захватывать все, что помещено в директиву в разметке, и использовать ее где-то (где на самом деле ng-transclude
это значение) в шаблоне директивы. Подробнее об этом читайте в разделе « Создание директивы, которая включает другие элементы » в документации по директивам .
Если вы пишете пользовательскую директиву, вы используете ng-transclude в шаблоне директивы, чтобы отметить точку, в которую вы хотите вставить содержимое элемента
angular.module('app', [])
.directive('hero', function () {
return {
restrict: 'E',
transclude: true,
scope: { name:'@' },
template: '<div>' +
'<div>{{name}}</div><br>' +
'<div ng-transclude></div>' +
'</div>'
};
});
Если вы положите это в вашей разметке
<hero name="superman">Stuff inside the custom directive</hero>
Это будет отображаться как:
сверхчеловек
Материал внутри пользовательской директивы
Полный пример:
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
Визуализируйте: