嵌入式角度指令的范围

时间:2013-07-03 10:41:53

标签: inheritance angularjs angularjs-directive angularjs-scope prototypal-inheritance

我创建了两个指令,比如A和B:

   <A>
      <B />
   </A>

A是一个转录。 A和B的范围都是从他们的控制器继承的。

我想使用事件连接A和B.根据他们都使用ng-controller范围我必须写这样的东西: 在A的控制器中

$scope.$parent.$broadcast(..)

在B的控制器中:

$scope.$on(...)

工作正常。

但是如果我不想使用ng-controllers怎么办?就像我正在开发包含子指令的独立复杂指令(如A包含B)。是否有可能说角度从A的范围继承B的范围?所以我可以这样做: 在A的:

$scope.$broadcast(..)

和B的

$scope.$on(..)

1 个答案:

答案 0 :(得分:3)

您可以使用具有通知语义的服务在两个或多个控制器/指令之间进行通信。有一个很好的example of that here

您使用它的方式是在pubsub上的指令中使用依赖项,然后使用发布/订阅方法发送/接收消息。

我和demo here

在一起

----更新----

我对此有了更多的了解,并发现这两个指令实际上共享范围,因此您可以直接更新范围值。您也可以使用广播。我把另一个demo of the broadcast method here放在一起。