Как выгрузить директиву AngularJS при изменении шаблонов

#angularjs #angularjs-directive

#angularjs #angularjs-директива

Вопрос:

У меня есть веб-приложение, созданное с помощью AngularJS, и оно включает в себя различные маршруты / контроллеры / представления / и т.д.

Для нескольких представлений требуются директивы, которые я включаю. Однако я заметил, что при изменении маршрута и загрузке нового шаблона директивы из старого шаблона продолжают выполняться. Просто создав директиву, которая регистрируется в консоли, вы продолжите вести ее при загрузке нового маршрута.

Есть ли способ избежать этого? Это кажется пустой тратой памяти.

Комментарии:

1. Этого не должно произойти. Не могли бы вы опубликовать плунжер с проблемой? Возможно, есть прослушиватели событий или таймеры, которые вы не прекратили прослушивать, когда область действия директивы элемент была уничтожена.

2. Конечно! Я привязывался к изменению размера и забыл отменить привязку. Добавлено: $scope.$on('$destroy',function() { angular.element($window).unbind('resize'); }); и все хорошо!

Ответ №1:

Вам необходимо отменить привязку событий, связанных с директивой.

Например, если у вас было событие изменения размера, привязанное к окну, вы должны сделать следующее:

 $scope.$on('$destroy',function() {
    angular.element($window).unbind('resize')
})