我正在寻找关于何时以及为什么要在指令定义中使用“require”选项的指导原则,为什么不使用范围进行通信 - 就像大多数时间一样在Angular中? 它是如何突然出现在指令中,我要求控制器本身,而不是仅仅将事情附加到作用域?AngularJS中的指令(和其他部分)之间的通信
一般而言 - 有许多方式角指令/控制器/示波器之间的通信 -
- 范围继承。
- RootScope“发射”。
- 服务(工厂/服务/提供商)。
- 在指令中要求控制器。
- 在指令中要求新的范围/隔离范围/“正常”范围。
- 更多?
虽然我理解他们是如何在技术上工作的,但我不清楚哪些指导原则决定使用哪一个以及为什么。
对于一些通用/高级别准则会很高兴。谢谢。即,要创建具有指导自己的表单控件 -
谢谢马克,我还会读其他你讨论过的指导。 “由于这些组件/指令都创建了隔离范围,所以范围继承不是一种选择。”即使在隔离范围内,我们可以使用'@'或'='并获得一些继承,我猜这个问题仍然是继承与范围链中较高的选项卡/窗格冲突?或者我把它全部弄错了? – Daniel 2013-05-09 17:31:52
@Daniel,true,'@'或者'='可以被使用,但是这需要'pane'指令通过HTML传递属性 - 也就是说,需要为每个指定'addPane()'方法使用窗格:''。所以在这里使用'require'似乎是一个更清洁的方法。 –
2013-05-09 18:35:24