我在指令中有以下代码,我想确保在销毁范围时清理它。我看过网上以及代码,我想知道如何取消绑定元素。
var window = angular.element($window);
window.bind("resize", function(e){
abc();
});
解决方案:
var abc = function() {};
var window = angular.element($window);
window.bind('resize', abc);
scope.$on('$destroy', function(e) {
window.unbind('resize', abc);
});
答案 0 :(得分:4)
当指令的范围被破坏时,从window
取消绑定该函数。因此,在您的指令中,您将在范围的销毁事件中调用清理功能:
$scope.$on('$destroy', cleanUp);
创建cleanUp
函数并调用jQuery' unbind function。
this SO entry中有一个示例,但改为使用off
函数(类似于unbind
,但在jqLite中不可用)。同样根据此SO条目,您可能必须为您的功能命名,因为您需要再次将其作为unbind
调用中的参数进行引用。