Angularjs - 元素上的多个指令,其中一个是隔离范围

时间:2014-11-01 19:25:17

标签: javascript angularjs angularjs-directive

想知道是否有人可以解释当前的行为。

我有一个带隔离范围的指令,称之为dirA。然后我再给它一个指令,dirB。期望第二个指令获取isolate指令创建的每个范围。

dirB获取控制器范围。为什么它不能获得dirA为该元素创建的相同隔离范围?

感谢您的帮助。我真的没有任何代码,只是好奇。如果有人需要两个小指令和一些html来帮助想象我当然会。谢谢。

1 个答案:

答案 0 :(得分:6)

您观察到的是正确的,这种行为是设计的。

当指令请求隔离范围时,AngularJS专门为该指令创建范围,用于声明指令的元素。换句话说,隔离是per-directive,而不是per-element。这使得编码可重用和独立指令比如果必须防止隔离范围与其他指令的不当使用一样容易。

在同一元素上声明的所有其他指令共享外部作用域。 (值得注意的是,这些指令甚至无法请求自己的范围,孤立与否。虽然由于错误而无法在1.3之前保证此行为,但在1.3中已经是fixed。)