什么是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()得到的所有东西都呈现在那里,但指令属性在特定范围内仍然可见。