0

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

   <A>
      <B />
   </A>

A是一个transclude。A 和 B 的作用域是从它们的 ng-controllers 继承的。

我想使用事件连接 A 和 B。根据他们都使用 ng-controller 范围,我必须编写如下内容:在 A 的控制器中

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

在 B 的控制器中:

$scope.$on(...)

它工作正常。

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

$scope.$broadcast(..)

在 B 中

$scope.$on(..)
4

1 回答 1

3

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

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

我在这里拼凑了一个演示

- - 更新 - -

我对此进行了更多尝试,发现这两个指令实际上共享范围,因此您可以直接更新范围值。您也可以使用广播。我在这里整理了另一个广播方法的演示

于 2013-07-03T12:10:39.817 回答