#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')
})