取消绑定角度元素

Bla*_*ski 10 angularjs angularjs-directive

我在一个指令中有以下代码,我想确保在销毁范围时清理它.我看过网上以及代码,我想知道如何取消绑定元素.

var window = angular.element($window);
window.bind("resize", function(e){
    abc();
});
Run Code Online (Sandbox Code Playgroud)

解:

var abc = function() {};

var window = angular.element($window);
window.bind('resize', abc);

scope.$on('$destroy', function(e) {
    window.unbind('resize', abc);
});
Run Code Online (Sandbox Code Playgroud)

jlr*_*jlr 4

window当指令的作用域被破坏时,解除函数的绑定。因此,在您的指令中,您将在作用域的 destroy 事件上调用清理函数:

$scope.$on('$destroy', cleanUp);

创建一个cleanUp函数并调用 jQuery 的unbind 函数

此 SO 条目中有一个示例,但使用了off函数(看起来与 类似unbind,但在 jqLit​​e 中不可用)。另外,根据此 SO 条目,您可能必须命名您的函数,因为您需要在调用中再次引用它作为参数unbind

  • `off` 和 `on` 函数在 [`jqLit​​e`](https://docs.angularjs.org/api/ng/function/angular.element) 中不可用。它们是完整的 jQuery 版本。`bind` 和 `unbind` 位于 `jqLit​​e` 中。 (2认同)