我读到角度侦听器($scope.$on
(被$destroy自动删除。我还读到像jQuery($(document).on
(这样的外部事件处理程序需要手动删除。
有谁知道angular.element属于这种范式吗?
一个团队成员写了类似angular.element(document).on('event', () => );
.我需要在$onDestroy
中手动删除此事件吗?
angular.element (jqLite( 是 jQuery 的一个微小的、与 API 兼容的子集,它允许 AngularJS 以跨浏览器兼容的方式操作 DOM。jqLite
仅实现最常用的功能,目标是占用空间非常小。
指令链接函数使用它来将事件侦听器附加到指令本身元素以外的元素,需要在销毁指令元素时注销这些侦听器。
function postLink(scope, elem, attrs) {
$document.on('event', documentEventHandler);
scope.$on("$destroy", function() {
$document.off('event', documentEventHandler);
});
function documentEventHandler(event) {
console.log(event.target);
//other code here
});
}
为了便于单元测试,请注入 AngularJS $document 服务,而不是使用angular.element(document)
。