Задать вопрос

Angular: сработает ли сборщик мусора для директивы, после исчезновения объекта, к которому привязана директива?

К элементу привязана директива.
app.directive('myDirective',function(){
return{
   restrict:'ACE',
   link: function(scope, element){
     element.bind('click',function(){
      doSomething();
     });
   } 
}
});


<input type="text" my-directive value="">

Потом происходит переход на новую страницу, и элемента, к которому была привязана директива больше нет в DOM.

Вопрос: нужно ли делать unbind в директиве или сборщик мусора сам с этим разберется после исчезновения инпута из DOM?
  • Вопрос задан
  • 2326 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Академия Eduson
    Frontend-разработчик
    9 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • Учебный центр IBS
    WEB-022 Разработка на Angular. Продвинутый уровень
    1 неделя
    Далее
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Об этом позаботится браузер (webview), так как если нету директивы, то нету и элемента к которому он привязан. Следовательно браузер сам удалит все обработчики событий вместе с удаляемым элементом.

В случае если директива вешает обработчики на что-то уровнем выше ($window, $document например) то да, тогда нужно делать unbind при событии $destroy у $scope.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы