0

Я новичок в angularjs. Я разработал angularJS услугу, которая в соответствии со схемой, приведенной ниже: -сбор мусора в угловой службе

enter image description here

Глобальный сервис используется как средство для связи между контроллером. То есть он содержит данные, разделяемые между родительским и дочерним контроллером. Контроллер Grand Parent открывает всплывающее диалоговое окно с parentController2, которое, в свою очередь, открывает другое всплывающее окно с childController3.

Теперь, я хочу, данные, хранящиеся в глобальной службе, должны быть установлены в нуль, когда связанный с ним контроллер будет уничтожен. Это связано с тем, что службы являются одноточечными в angularjs, насколько мне известно. Поэтому я не хочу, чтобы служба сохраняла переменную на протяжении всего жизненного цикла приложения, даже если они не требуются.

Кроме того, я использую синтаксис controllerAs и не хочу использовать $ scope (я знаю, что я могу делать сборку мусора в событии «$ destroy» в области), чтобы сделать мой материал совместимым с angularjs 2.0.

Есть ли способ, я могу мусор собирать переменную в обслуживании, которая не требуется, от контроллера, когда используется синтаксис controllerAs?

Извините, новичок вопрос. Заранее спасибо.

ответ

0

Использование ng-view - еще одно решение для сбора мусора, поскольку оно разрушает область действия, как только изменяется вид. Он будет использоваться с ngroute, но все же обеспечивает лучший механизм сбора мусора. Вы можете проверить код нг ракурса

function destroyLastScope() { 
    if (lastScope) { 
     lastScope.$destroy(); 
     lastScope = null; 
    } 
    } 

Эта функция вызывается внутри директивы, разрушающей сферу предыдущей сферы, т.е. если вы идете от родителя к ребенку родитель сфера будет уничтожен

+0

Что такое lastScope здесь? –

+0

Это область действия родителя, если вы переходите к ребенку. –