相关疑难解决方法(0)

AngularJS - $ destroy是否删除事件监听器?

https://docs.angularjs.org/guide/directive

通过侦听此事件,您可以删除可能导致内存泄漏的事件侦听器.注册到范围和元素的监听器在销毁时会自动清理,但如果您在服务上注册了监听器,或者在未删除的DOM节点上注册了监听器,则必须自行清理或者你冒着引入内存泄漏的风险.

最佳实践:指令应该自行清理.您可以使用element.on('$ destroy',...)或范围.$ on('$ destroy',...)来删除指令时运行清理函数.

题:

element.on "click", (event) ->我的指令里面有一个:

  1. 当指令被销毁时,是否有任何内存引用element.on以防止它被垃圾收集?
  2. Angular文档声明我应该使用处理程序来删除$destroy发出的事件上的事件侦听器.我的印象是destroy()删除了事件监听器,是不是这样?

memory-leaks angularjs

197
推荐指数
1
解决办法
11万
查看次数

AngularJS $监视窗口调整指令内部的大小

我有暴露模块模式,看起来像这样:

'use strict';

angular.module('app', [])
   .directive('myDirective', ['SomeDep', function (SomeDep) {
       var linker = function (scope, element, attr) {
          // some work
       };

       return {
          link: linker,
          restrict: 'E'
       };
   }])
;
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是将$ watch集成到这里.通过'$ window'服务专门观看窗口调整大小.

[编辑]:

我一直意识到我的问题是什么......当我忘记我将它作为属性实现时,我正在限制元素... @ _ @;

resize directive window watch angularjs

48
推荐指数
2
解决办法
10万
查看次数

取消绑定角度元素

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

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)

angularjs angularjs-directive

10
推荐指数
1
解决办法
1万
查看次数