javascript - 离开路线时 Angular 解除绑定(bind)事件

标签 javascript angularjs dom-events

我的应用程序中的一个路由需要一些特殊的 keypress 事件绑定(bind),但其他路由都不需要。

因此,在该路线的 Controller 中,我像这样绑定(bind)事件:

angular.element( document.body ).bind('keydown keypress', function (event)
{
   //...
});

我刚刚注意到,当我导航到该路线,然后离开并转到不同的路线时,这些键盘事件绑定(bind)仍然处于事件状态。

当路由更改为不同的 Controller 时,如何解除事件绑定(bind)?

最佳答案

当范围被破坏时,您可以取消绑定(bind)事件。

$scope.$on('$destroy', function() {
    angular.element( document.body ).unbind('keydown keypress', handler);
});

http://api.jquery.com/unbind/有关于如何解除事件绑定(bind)的引用。

只要作用域在 Angular 上被破坏,$destroy 事件就会被触发。

关于javascript - 离开路线时 Angular 解除绑定(bind)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750633/

相关文章:

javascript - react JS |无法在现有状态转换期间更新

java - 从 angularjs 对 java 的向上调用仅在手动页面刷新后才起作用

javascript - 将 HTML 元素附加到现有元素的 AngularJS 指令

javascript - AngularJS中我的jsp中其他 Controller 的可访问性

javascript - 在Javascript事件中,如何判断stopPropagation()已经被调用?

javascript - 关于 underscore.js 中的函数是异步还是同步的一些担忧

javascript - 重置kendo多过滤器复选框数据源以反射(reflect)过滤后的数据

javascript - 自定义对象和事件监听器

javascript - 如何在 gethash javascript 函数中查找具有特定字母的字符串

javascript - 鼠标松开时 Chrome 中的背景颜色不会改变