从AngularJS关于指令的文档中:
transclude
-编译元素的内容并使其可用于指令。通常与ngTransclude一起使用。包含的优点是链接功能接收一个预先绑定到正确作用域的包含功能。在典型的设置中,小部件创建隔离范围,但包含不是对象,而是隔离范围的同级。这使得小部件可以具有私有状态,并且可以将包含项绑定到父(预隔离)范围。
true
-排除指令的内容。
'element'
-排除整个元素,包括以较低优先级定义的任何指令。
超越:正确
因此,假设您有一个名为的my-transclude-true
声明的指令,transclude: true
它看起来像这样:
<div>
<my-transclude-true>
<span>{{ something }}</span>
{{ otherThing }}
</my-transclude-true>
</div>
编译之后和链接之前,它变为:
<div>
<my-transclude-true>
<!-- transcluded -->
</my-transclude-true>
</div>
其内容(子级)为my-transclude-true
,已<span>{{ something }}</span> {{...
被排除并且可用于该指令。
包含:“元素”
如果您有一个名为my-transclude-element
声明的指令,则该指令transclude: 'element'
如下所示:
<div>
<my-transclude-element>
<span>{{ something }}</span>
{{ otherThing }}
</my-transclude-element>
</div>
编译之后和链接之前,它变为:
<div>
<!-- transcluded -->
</div>
在这里,包括其子元素在内的整个元素都被排除并提供给指令。
链接后会发生什么?
这取决于您的指令使用transclude函数执行所需的操作。ngRepeat
使用,transclude: 'element'
以便在范围更改时可以重复整个元素及其子元素。但是,如果只需要替换标签并希望保留其内容,则可以transclude: true
与ngTransclude
为您执行此操作的指令一起使用。
made available to the directive
句话。该元素始终可用于指令。您能详细说明一下吗?