【发布时间】:2014-11-21 01:52:34
【问题描述】:
为什么在指令中注入控制器是通过require 完成的,而其他依赖项是通过数组注解完成的?
【问题讨论】:
-
NM,我现在明白这个问题了。
标签: angularjs controller angularjs-directive annotations dependencies
为什么在指令中注入控制器是通过require 完成的,而其他依赖项是通过数组注解完成的?
【问题讨论】:
标签: angularjs controller angularjs-directive annotations dependencies
需要控制器
如果您想共享同一个控制器实例,则使用require。
require 确保存在另一个指令,然后将其控制器作为参数包含在链接函数中。因此,如果您在一个元素上有两个指令,则您的指令可以要求存在另一个指令并获得对其控制器方法的访问权限。一个常见的用例是需要 ngModel。
^require,添加插入符号后,除了当前元素之外,还会检查指令上方的元素,以尝试找到另一个指令。这使您可以创建复杂的组件,其中“子组件”可以通过其控制器与父组件进行通信以达到很好的效果。示例可能包括选项卡,其中每个窗格都可以与整个选项卡通信以处理切换;手风琴套装可以确保一次只打开一个;等等
在任何一种情况下,您都必须同时使用这两个指令才能使其工作。 require 是组件之间的一种通信方式。
How to require a controller in an angularjs directive
由于数组注释的原因,看看这些东西
Why is the function in angular's DI inline annotation a array element?
【讨论】:
控制器永远不会真正注入到其他东西中。当您使用 require 时,您只是获得了对父元素或当前元素上的其他控制器的访问权限。这些“其他指令”必须单独存在于同一元素或父元素上,因此名称为“require”。
另一种说法是,使用 require 你不是要求传递、实例化或创建某些东西,你只是说“我希望它存在于这个元素上......因为我知道它存在,所以我可以在链接函数中访问它。”
【讨论】: