AngularJS:链接vs编译vs控制器

前端之家收集整理的这篇文章主要介绍了AngularJS:链接vs编译vs控制器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当创建指令时,可以将代码放入编译器,链接函数或控制器。
在文档中,他们解释:

>编译和链接功能用于角度的不同阶段
周期
>控制器在指令之间共享。

但是,对我来说不清楚,哪种代码应该去哪里。例如。:
我可以在编译中创建函数,并将它们附加到链接中的作用域。或者我只将功能附加到控制器中的范围?如果每个指令都有自己的控制器,如何在指令之间共享控制器?真的是控制器共享还是只是范围属性

编译:

这是Angular实际编译你的指令的阶段。对于给定指令的每次引用,此编译函数调用一次。例如,假设您正在使用ng-repeat指令。 ng-repeat将必须查找它附加到的元素,提取它附加到的html片段并创建一个模板函数

如果你已经使用HandleBars,下划线模板或等同物,它像编译他们的模板来提取出一个模板函数。对于这个模板函数,你传递数据,函数的返回值是html,数据在正确的地方。

编译阶段是Angular中返回模板函数的步骤。角模板函数称为链接函数

链接阶段:

链接阶段是将数据($ scope)附加到链接函数,它应该返回链接的html。因为指令还指定了这个html的位置或者它改变了什么,它已经很好去了。这是要对链接的html(即已经附加了数据的html)进行更改的函数。如果你在链接函数中编写代码,它通常是后链接函数(默认情况下)。它是一种回调,在链接函数将数据与模板链接调用

控制器:

控制器是一个放置某些指令特定逻辑的地方。这个逻辑也可以进入链接函数,但是你必须把这个逻辑放在范围上,使它“共享”。问题是,你将然后腐败的范围与你的指令东西,这不是真正的预期。那么,如果两个指令想要彼此交谈/相互合作,什么是替代方法?当然,你可以把所有的逻辑放到一个服务,然后使这两个指令依赖于服务,但只是带来一个依赖。另一种方法是为这个范围提供一个控制器(通常是隔离范围?),然后当该指令“需要”另一个指令时,该控制器被注入另一个指令。有关示例,请参阅angularjs.org第一页上的选项卡和窗格。

原文链接:https://www.f2er.com/angularjs/147519.html

猜你在找的Angularjs相关文章