Как сбросить $ rootScope?

После выхода пользователя из системы мне нужно очистить файл $rootScope. Я пробовал $rootScope.$destroy(), но это не помогло. Есть ли способ перебрать все значения в $ rootScope и удалить их или метод, чтобы просто сбросить его?


person Adam Boostani    schedule 18.06.2015    source источник


Ответы (3)


Вы можете сохранить значения по умолчанию, которые поставляются с $rootScope при его инициализации. Поскольку все они начинаются с $, вы можете удалить все свойства, которые не начинаются с $.

for (var prop in $rootScope) {
    if (prop.substring(0,1) !== '$') {
        delete $rootScope[prop];
    }
}

Вы можете упростить вызов, добавив его как функцию в $rootScope.

$rootScope.$resetScope = function() {
    ...
}
person soote    schedule 18.06.2015

  • Действительно, метод $destroy() не будет работать в $rootScope (см. здесь). Я обошел это, вызвав $rootScope.$broadcast("$destroy") вместо .$destroy() при удалении всего экземпляра Angular в нашем приложении. Таким образом, все деструкторы вызываются одинаково.

  • Что касается события element $destroy, я должен признать, что несколько дней назад я даже не знал об этом… Я не видел его нигде в документах, к тому же я использую jQuery, поэтому в соответствии с здесь у меня это все равно не сработает.

Ссылка из здесь

Это длинное описание, но вы можете вручную очистить RootScope, используя следующие способы.

Опция 1

Очистить переменную rootScope

$rootScope.currentStatus = ""; //or undefined 

Вариант 2

если вы хотите удалить объекты $rootscope целиком,

 $rootScope=undefined //or empty 
person Ramesh Rajendran    schedule 18.06.2015
comment
Начиная с версии 1.6, похоже, это больше не так. rel="nofollow noreferrer">github.com/angular/angular.js/blob/v1.6.x/src/ng/ - person CheapSteaks; 07.04.2017

Чтобы удалить переменную из rootScope

delete $rootScope.variablename
person Sajeetharan    schedule 18.06.2015