[英]Communication between directives (and other parts) in AngularJS
我正在寻找关于何时以及为什么要在指令定义中使用“require”选项的指南,为什么不使用Scope进行通信 - 就像Angular中的大多数时候一样? 怎么样,突然在指令中,我要求控制器本身,而不只是将东西附加到范围?
一般来说 - Angular中的指令/控制器/作用域之间有很多通信方式 -
虽然我理解它们在技术上是如何工作的,但我不清楚决定使用哪一个以及为什么使用哪些指南。
对于某些一般/高级指南感到高兴。 谢谢。
如果要创建自定义表单控件, require
特别有用(请参阅从控件实现自定义部分) - 即,您希望使用指令创建自己的表单控件。 您可以require
ngModelController通过其API /函数访问许多现有功能。
另一个用例可以在AngularJS主页的Create Components部分找到,其中pane
指令使用require: '^tabs'
来访问tabs
控制器。 由于这两个组件/指令都创建了隔离范围,因此范围继承不是一种选择。 服务也不合适,因为您的应用程序可能有多个tabs
指令。 因此,在这种情况下,控制器用作pane
指令的一种手段,以便能够影响tabs
范围 - 以便能够获得范围。 不使用require
, pane
指令无法进入tabs
范围。 我在这个SO答案中更详细地讨论了这个(带图片): AngularJS控制器中的'this'与$ scope
如果感兴趣的控制器是在同一元素(例如, ngModelController
)上定义的,或者如果存在层次结构(例如,窗格 - >选项卡),则只能使用require
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.