Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   автоматическое удаление скоупа директивы при удаление dom узла (https://javascript.ru/forum/angular/57903-avtomaticheskoe-udalenie-skoupa-direktivy-pri-udalenie-dom-uzla.html)

FanAizu 25.08.2015 21:38

автоматическое удаление скоупа директивы при удаление dom узла
 
Не нашел ответа на свой вопрос ни в гугле, ни в документации ангулара. Спросил коллег, полазил по стековерфлоу, поискал ответ в исходниках ангулара. В итоге есть два мнения, какое верное - не знаю. Собственно поэтому и спрашиваю знающих людей. Вопрос в следующем: должен ли я подписываться на событие $destroy DOM элемента, к которому прикреплена директива, чтобы в listener-е этого события вызывать scope.$destroy(), либо же ангулар сам удалит скоуп при удаление DOM узла? Из-за чего возник вопрос и почему я просто не возьму и не проверю это сам? Дело в том, что на проекте есть директива попапа, ему передается содержимое, которое компайлится при открытии попапа и удаляется из DOM-а при закрытии попапа. Но возникли проблемы. При повторном открытии попапа, директива, переданная в попап посылала с каждым новым открытием попапа на один запрос за данным на сервер больше. Оказалось, что вотчеры($watch) из прыдыдущей инициализации моей директивы до сих пор были живы, что означало, что после удаления DOM-а из попапа, scope.$destroy() не вызывался автоматически ангуларом. Я спросил у коллег и они меня хором убеждали, что ангулар должен сам вызывать scope.$destoy(), когда удаляется DOM элемент, к которому директива прикреплена(на котором инициализирована). Собственно, дилемма для меня. Проясните, пожалуйста. Спасибо.


Часовой пояс GMT +3, время: 15:27.