После выхода пользователя из системы мне нужно очистить файл $rootScope. Я пробовал $rootScope.$destroy()
, но это не помогло. Есть ли способ перебрать все значения в $ rootScope и удалить их или метод, чтобы просто сбросить его?
Как сбросить $ rootScope?
Ответы (3)
Вы можете сохранить значения по умолчанию, которые поставляются с $rootScope
при его инициализации. Поскольку все они начинаются с $
, вы можете удалить все свойства, которые не начинаются с $
.
for (var prop in $rootScope) {
if (prop.substring(0,1) !== '$') {
delete $rootScope[prop];
}
}
Вы можете упростить вызов, добавив его как функцию в $rootScope
.
$rootScope.$resetScope = function() {
...
}
Действительно, метод
$destroy()
не будет работать в $rootScope (см. здесь). Я обошел это, вызвав$rootScope.$broadcast("$destroy")
вместо.$destroy()
при удалении всего экземпляра Angular в нашем приложении. Таким образом, все деструкторы вызываются одинаково.Что касается события element $destroy, я должен признать, что несколько дней назад я даже не знал об этом… Я не видел его нигде в документах, к тому же я использую jQuery, поэтому в соответствии с здесь у меня это все равно не сработает.
Ссылка из здесь
Это длинное описание, но вы можете вручную очистить RootScope
, используя следующие способы.
Опция 1
Очистить переменную rootScope
$rootScope.currentStatus = ""; //or undefined
Вариант 2
если вы хотите удалить объекты $rootscope целиком,
$rootScope=undefined //or empty
Чтобы удалить переменную из rootScope
delete $rootScope.variablename