【问题标题】:AngularJS combining the use of two custom directives with shared scopeAngularJS 将两个自定义指令的使用与共享范围相结合
【发布时间】:2013-05-27 12:38:26
【问题描述】:

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

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

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

谢谢 汤姆

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在对$compile method 的引用中总结了如何组合指令范围。

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

      • 无作用域 + 无作用域 => 两个不需要自己作用域的指令将使用其父作用域
      • 子作用域 + 无作用域 => 两个指令将共享一个子作用域
      • 子作用域 + 子作用域 => 两个指令将共享一个子作用域
      • 隔离范围 + 无范围 => 隔离指令将使用它自己创建的隔离范围。另一个指令将使用其父级的 范围
      • 独立作用域 + 子作用域 => 行不通!只有一个范围可以与一个元素相关联。因此不能应用这些指令 到同一个元素。
      • 隔离范围 + 隔离范围 => 行不通!只有一个范围可以与一个元素相关联。因此不能应用这些指令 到同一个元素。

      【讨论】:

        【解决方案3】:

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

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

        看官方解释,有一个很好的例子:https://docs.angularjs.org/guide/directive#creating-directives-that-communicate

        【讨论】:

          猜你喜欢
          • 2017-01-17
          • 1970-01-01
          • 2016-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多