Transcludeは、マークアップ内のディレクティブ内に配置されたすべてのものをキャプチャし、ディレクティブのテンプレートのどこか(実際にng-transclude
はどこにあるか)で使用するようにangularに指示する設定です。詳細については、ディレクティブのドキュメントの「他の要素をラップするディレクティブの作成」セクションをご覧ください。
カスタムディレクティブを作成する場合は、ディレクティブテンプレートで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
視覚化: