从嵌套的子组件

时间:2016-05-05 04:38:11

标签: angularjs

使用Angular 1.5,并给出一个组件层次结构,例如:

compA
  compB
    compC

是否有更好的方法将事件从嵌套子组件冒泡到感兴趣的父组件?

我看到的两个选项是:

从compC拨打$scope.$emit()。在compA中使用$scope.$on()

赞成

  • compC解耦,更有可能重复使用
  • compB不必以任何方式了解此输出

缺点

  • 使用$ scope,我希望避免,因为它不再存在于NG2中。但是,我没有找到更好的解决方案。

将compA的回调传递给compB,然后使用&绑定

传递给compC

赞成

  • compC解耦,更有可能重复使用

缺点

  • 必须参与compB,使这个解决方案变得脆弱

也许我应该制作一个例外并允许$ scope用于此场景。或者,可以选择在$ rootScope上发出/侦听。

编辑:我发现$ rootScope只能用于真正的全局事件,忘记清理你的监听器是很常见的,这是在$ scope上自动完成的。

1 个答案:

答案 0 :(得分:1)

将数据从CompC传递到CompA(或在任何组件之间)的另一种方法是使用服务而不是基于事件的消息传递。您可以在服务的所有组件中定义依赖关系,并使用该服务在它们之间传递数据。这将再次使组件可重用。