angular 离开路线时取消绑定事件

angular unbind events when you leave a route

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

所以,在那个路由的控制器中,我像这样绑定事件:

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

我刚刚注意到,当我导航到那条路线,然后离开并转到另一条路线时,那些键盘事件绑定仍然有效。

当路由切换到不同的控制器时,如何解除事件绑定?

当作用域被销毁时,您可以取消绑定事件。

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

http://api.jquery.com/unbind/ 有关于如何取消绑定事件的参考资料。

只要范围在 angular 中被销毁,就会触发 $destroy 事件。

当作用域被销毁时,您可以使用 jqLit​​e 中的 unbind 函数。