AngularJS:$scope.$on 和 document.addEventListener 之间的差异
AngularJS: Differences between $scope.$on and document.addEventListener
我是Javascript和AngularJS的新手。在我看来,两者都是事件监听者。有什么区别?我可以互换使用它们吗?如何?
$scope.$on 将捕获$scope上的 .$broadcast() 事件,而 addEventListener 侦听页面上的任何事件。它们相似但不可互换。
如果在角度应用程序中工作,除非另有需要,否则我肯定会使用 $scope.$on,即从角度应用程序外部捕获事件。 如果您正在编写单元测试,并且只从您自己的代码中查找事件,则您将获得可测试性,这可能是您正在寻找的。
No.它们在不同的对象上运行,并且不可互换,尽管它们的作用非常相似。两者都向可以发出事件的对象添加一个事件侦听器,但作用域不是 HTMLElements(如document
),并且在作用域上触发的事件与在 HTML 上触发的事件不同。
应
尽可能使用$scope.$on
。通常,如果有 Angular 的方式来做某事,你应该这样做。
$scope.$on
与将数据发送到所有父控制器的 $scope.$emit
和将数据发送到所有子控制器的$scope.$broadcast
结合使用。这使您可以更好地控制通过应用程序的数据流。此外,在本机事件侦听器中处理事件将破坏双向数据绑定。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 操作放置在画布上的元素之间的连接
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- jquery在表单之间切换
- Nodejs API控制器,用于在API之间切换
- 如何在aspx页面之间传递参数
- 在索引.html和应用.js [node.js] 之间共享变量
- 什么是&&在没有if的行中的变量之间
- DOM元素和angular元素之间的主要区别是什么
- DataTables在表之间移动行