什么是ng-transclude?
在StackOverflow讨论ng-transclude时,我已经看到了一些问题,但是没有一个从外行的angular度来解释它是什么。
文档中的描述如下:
标记插入点的指令,该插入点是使用跨越的最近的父指令的跨行DOM。
这相当混乱。 有人能够简单地解释ng-transclude的意图和可能的用途吗?
Transclude是一个设置来告诉angular度来捕获放置在标记指令中的所有内容,并在指令的模板中的某处(实际上是ng-transclude
所在的地方)使用它。 阅读关于创build包含其他元素 的指令部分关于指令文档的更多信息 。
如果您编写自定义指令,则在指令模板中使用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
可视化:
这是一种产量,从element.html()得到的所有东西都呈现在那里,但指令属性在特定范围内仍然可见。