什么时候应该使用transclude: 'true'
以及何时transclude: 'element'
?我transclude: 'element'
在angular文档中找不到任何有关它们的信息,这非常令人困惑。
如果有人可以用简单的语言解释这一点,我将很高兴。每种选择的好处是什么?它们之间的真正区别是什么?
这是我发现的:
transclude: true
在编译函数内部,您可以借助transclude链接函数来操作DOM,也可以使用任何HTML标记上的ngTransclude指令将已嵌入的DOM插入模板中。
和
transclude: ‘element’
这将包含整个元素,并且在编译函数中引入了包含链接功能。您无法在此处访问范围,因为尚未创建范围。编译函数为该指令创建了一个链接函数,该链接函数可以访问范围,而transcludeFn可以让您触摸克隆的元素(已被嵌入)进行DOM操作或使用绑定到其中范围的数据。供您参考,这在ng-
repeat和ng-switch中使用。
从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
为您执行此操作的指令一起使用。
问题内容: 我一直在阅读此选择器,并得到相互矛盾的答案。 在:/ deep /和::shadow在CSS选择器中是什么意思? 我们看: 正如Joel H.在评论中指出的那样,Chrome自此之后就弃用了/ deep /组合器,并在IE中给出了语法错误。 我们看: / deep /不再存在,所以我认为我们不应该支持它。>>>是新版本,可能应该支持 我们看: / deep /选择器还具有别名>>>。我
有人在指令中被监视。 在这种情况下,只有在apply存在时才触发watch。
问题内容: 我尝试将Angular与Bluebird Promise一起使用: HTML: JS: [ 小提琴 ] 但是,无论我尝试了什么,它都保持不变并且没有更新。除非我添加了手册,否则我会避免使用。 如何让Bluebird与AngularJS一起使用? (我知道这是可能的,因为$ q可以这样做) 我正在使用Bluebird2.0,我在这里。 问题答案: 这是可能的,甚至很容易! 好吧,如果我们
问题内容: 我是pthread的新手,我正试图了解它。我看到了一些类似以下的示例。 我可以看到API阻止了它,并且我看到了一些示例,其中主要功能都被API阻止了。我不明白什么时候使用什么? 我指的是以下站点-https://computing.llnl.gov/tutorials/pthreads/。我无法获得何时使用和何时使用的概念。 有人可以解释一下吗?此外,将感谢一个很好的pthread教程
问题内容: 我有一个利用SignalR与桌面应用程序通信的应用程序。要使用SignalR,我需要在.ts文件中使用jQuery。但是,从Angular 7迁移到Angular 8后,它似乎不起作用。 我像以前的Angular版本一样使用。不幸的是,$现在向控制台输出空白。 那么,Angular v8不再支持这种方式使用jQuery,还是在迁移过程中出现其他问题? 更新: 我有通过npm加载的jQu
问题内容: 基础 角1.1.5- http ://plnkr.co/edit/eoKt8o4MJw9sWdYdeG3s? p= preview-作品 上调 角度1.2.6- http ://plnkr.co/edit/WopgAtFNVm1mKf5Li99h? p= preview-失败 我认为我确实遵循了文档中的说明-http: //docs.angularjs.org/api/ngAnimat