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