4

我有两个不同的自定义指令,它们都有一个独立的范围。有没有办法在同一个元素上使用这两个指令而不得到:

错误:多个指令 [...] 要求在...上隔离范围

我认为他们这样做会共享一个共同的范围,但它似乎不会(因为我得到这个错误)......

谢谢汤姆

4

3 回答 3

2

好的,我已经通过对我的两个指令使用相同的控制器来解决这个问题,允许它们共享与父作用域不同的作用域......

我仍然对有关该主题的任何建议感兴趣。

于 2013-05-27T13:54:17.010 回答
1

在对$compile 方法的引用中,有一个关于如何组合指令范围的摘要。

要点是隔离作用域永远不会共享,并且一个元素最多可以有一个作用域附加到它上面。如果您的指令使用子范围,那么它将在两个指令之间共享。

  • 没有作用域 + 没有作用域=> 两个不需要自己作用域的指令将使用其父作用域
  • 子范围 + 无范围=> 两个指令将共享一个子范围
  • 子作用域 + 子作用域=> 两个指令将共享一个子作用域
  • 隔离范围 + 无范围=> 隔离指令将使用它自己创建的隔离范围。另一个指令将使用其父级的范围
  • 隔离范围 + 子范围=> 不起作用!只有一个范围可以与一个元素相关联。因此,这些指令不能应用于同一元素。
  • 隔离范围 + 隔离范围=> 不起作用!只有一个范围可以与一个元素相关联。因此,这些指令不能应用于同一元素。
于 2015-12-06T03:52:33.077 回答
0

好吧,我认为 Angular 让您可以在使用父作用域和在指令之间进行通信之间进行选择。

您可以通过添加“从”指令使用的控制器功能在“主”指令中添加接口来实现后一个。从机通过在函数中解释依赖require: '^masterDirective'并可以使用它的接口link

用一个很好的例子查看官方解释:https ://docs.angularjs.org/guide/directive#creating-directives-that-c​​ommunicate

于 2015-07-14T14:28:32.113 回答