AngularJS:$scope.$on 和 document.addEventListener 之间的差异

AngularJS: Differences between $scope.$on and document.addEventListener

本文关键字:之间 addEventListener scope on AngularJS document      更新时间:2023-09-26

我是Javascript和AngularJS的新手。在我看来,两者都是事件监听者。有什么区别?我可以互换使用它们吗?如何?

$scope.$on 将捕获$scope上的 .$broadcast() 事件,而 addEventListener 侦听页面上的任何事件。它们相似但不可互换。

如果在角度应用程序中工作,除非另有需要,否则我肯定会使用 $scope.$on,即从角度应用程序外部捕获事件。 如果您正在编写单元测试,并且只从您自己的代码中查找事件,则您将获得可测试性,这可能是您正在寻找的。

No.它们在不同的对象上运行,并且不可互换,尽管它们的作用非常相似。两者都向可以发出事件的对象添加一个事件侦听器,但作用域不是 HTMLElements(如document),并且在作用域上触发的事件与在 HTML 上触发的事件不同。

尽可能使用$scope.$on。通常,如果有 Angular 的方式来做某事,你应该这样做。

$scope.$on 与将数据

发送到所有父控制器的 $scope.$emit 和将数据发送到所有子控制器的$scope.$broadcast结合使用。这使您可以更好地控制通过应用程序的数据流。此外,在本机事件侦听器中处理事件将破坏双向数据绑定。