【问题标题】:unbind an angular element取消绑定角度元素
【发布时间】:2014-09-17 21:17:25
【问题描述】:

我在指令中有以下代码,我想确保在作用域被销毁时将其清理干净。我在网上查看了代码以及代码,我想知道如何取消绑定元素。

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);
});

【问题讨论】:

  • 解除绑定对你不起作用吗?

标签: angularjs angularjs-directive


【解决方案1】:

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

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

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

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

【讨论】:

  • offon 函数在 jqLite 中不可用。它们在完整的 jQuery 版本中。 bindunbindjqLite 中。
  • 谢谢指正,很高兴知道!我从来没有观察过,因为我在 Angular 中使用了完整的 jQuery 版本。
  • 所以我只需要调用 bind 和 unbind 然后......谢谢,我会尝试一下。
  • 我想我明白了,我只是希望解除绑定是解除处理程序的绑定:)
  • 我用我的解决方案更新了我的问题,我希望是取消连线 abc :D
猜你喜欢
  • 2013-10-19
  • 2013-08-16
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2013-12-12
相关资源
最近更新 更多