我是Javascript和AngularJS的新手。在我看来,两者都是一个事件倾听者。有什么区别?我可以互换使用吗?怎么样?
答案 0 :(得分:4)
$ scope。$ on将在$ scope上捕获$。broadcast()事件,而addEventListener监听页面上的任何事件。它们相似但不可互换。
如果在角度应用程序中工作,我肯定会使用$ scope。$ on,除非另有需要,即从角度应用程序外部捕获事件。如果您正在编写单元测试,并且只会从您自己的代码中查找事件,那么您将获得可测试性,这可能是您正在寻找的。 p>
答案 1 :(得分:1)
没有。它们在不同的对象上运行,并且不可互换,尽管它们在的中非常相似。两者都向可以发出事件的对象添加事件侦听器,但是作用域不是HTMLElements(如document
),并且在作用域上触发的事件不同于HTMLElements。
答案 2 :(得分:1)
$scope.$on
。通常,如果有一种Angular方式可以做某事,你应该这样做。
$scope.$on
与$scope.$emit
一起使用,后者将数据发送到所有父控制器,$scope.$broadcast
将数据发送到所有子控制器。这使您可以更好地控制通过应用程序的数据流。此外,处理本机事件侦听器内部的事件将破坏双向数据绑定。