У меня есть директива ниже и задаюсь вопросом, приведет ли это к утечке памяти при удалении компонента из DOM. Угловая делает так много дерьма под капотом, что я не могу сказать, позаботится ли об этом JS/Angular GC. (И я все еще пытаюсь понять JS Profiler в Chrome Tools, чтобы понять это сам). Итак, любой человек с таким опытом может ответить на это?Angular.js - будет ли эта директива причиной утечки памяти?
angular.module('myApp')
.directive('myDir', [function() {
return {
restrict: 'AE',
replace: true,
scope: {
someEvent:'@'
},
transclude: 'element',
template: function(tElement, tAttrs) {
return '<div class="">' +
'<div ng-transclude ng-click="blah()" class=""></div>'
'</div>';
},
link: function (scope, el) {
scope.doSomething = function(){
.....
}
scope.$on(scope.someEvent, scope.doSomething);
}
}
}]);
Приведенный выше код вызывает утечку памяти при удалении элемента из дома? Я имею в виду, я знаю, что я мог бы легко увеличить это добавить $ уничтожить событие: IE:
var unregister = scope.$on(scope.someEvent, scope.doSomething);
scope.$on("$destroy",function() {
unregister();
});
Но этот дополнительный шаг необходимо или делает Угловое уход тейк это так или иначе?
Спасибо за помощь!
спасибо, что помогает :) – 29er
только $ on будет очищен. любые вызовы jQuery.on вы должны очистить самостоятельно. – Berty