AngularJS - 在元素上使用多个指令,其中一个是隔离作用域

4

想知道有没有人能解释一下当前的行为。

我有一个带有隔离作用域的指令,称之为dirA。然后我再给它加上另一个指令,dirB。期望第二个指令可以获取隔离指令创建的每个作用域。

dirB获取了控制器作用域。为什么它不能获取dirA为该元素创建的相同隔离作用域呢?

感谢任何帮助。对于这个问题,我实际上没有任何代码,只是很好奇。如果有人需要两个小指令和一些HTML来帮助可视化,我当然会提供。谢谢。

1个回答

6

你所观察到的是正确的,这种行为是按设计来的。

当一个指令请求一个隔离的作用域时,AngularJS 会专门为该指令创建一个作用域,而不是为指令所在的元素创建一个作用域。换句话说,隔离是按指令而不是按元素进行的。这使得编写可重用和独立的指令比如果必须防止其他指令不当使用隔离作用域要容易得多。

在同一元素上声明的所有其他指令共享外部作用域。(值得注意的是,这些指令甚至不能请求它们自己的作用域,无论是隔离的还是非隔离的。虽然由于错误,在1.3之前不能保证这种行为,但它已经在1.3中修复。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接