每次显示一个弹出窗口,内存泄漏时,Angular $$观察者数量会增加吗?

时间:2017-03-22 04:10:21

标签: angularjs memory-leaks angular-ui-bootstrap

我有一个指令,当我将鼠标悬停在它上面时可以触发一个引导弹出窗口,我注意到每次悬停在它上面时,$$观察者数量会增加,即使删除了弹出框后它也不会减少,这导致我的应用程序中的内存泄漏,因为此指令在列表中,并且在用户注销之前不会被销毁。我的问题是如何删除这些观察者以防止内存泄漏?

这是可以触发弹出窗口的指令

  return module.directive('listItem', function () {
    return {
      restrict: 'E',
      replace: true,
      templateUrl: '/list-item.html',
      scope: {
        listItem: '='
      }
    };
  });

这是list-item.html,my-popover只不过是一个ng bootstrap popover decorator。

<div class="list-item"
  my-popover 
  trigger="hover" 
  placement="bottom" 
  content-template="/list-item-popover.html">

这是list-item-popover.html

<div id="list-item-popover"> 
  <div id="saved-item-row">
      <i ng-class="listItem.examSaved ? 'icon-ico_star_sm' : 'icon-ico_starempty_sm' "></i>
    </span>
  </div>
</div>

正如您所见,上面的模板有一个ng-class,我看到每次显示popover时,都会在范围内的$$ watchers数组中添加一个观察器。将鼠标悬停在它上16次之后,我在阵列中看到了16个重复的对象。我想知道是否有办法防止添加重复的对象?

enter image description here

0 个答案:

没有答案