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