Я хотів би змінити добру реакцію Джоша, додавши, що, оскільки AuthService, як правило, цікавить когось (скажімо, будь-хто, крім подання для входу, повинен зникнути, якщо ніхто не входить в систему), можливо, більш простою альтернативою було б сповіщення зацікавлених сторін за допомогою $rootScope.$broadcast('loginStatusChanged', isLoggedIn);(1 ) (2), тоді як зацікавлені сторони (наприклад, контролери) будуть слухати, використовуючи $scope.$on('loginStatusChanged', function (event, isLoggedIn) { $scope.isLoggedIn = isLoggedIn; }.
(1) $rootScopeвводиться як аргумент послуги
(2) Зверніть увагу, що у вірогідному випадку асинхронної операції входу в систему ви хочете повідомити Angular про те, що трансляція змінить ситуацію, включивши її у $rootScope.$apply()функцію.
Тепер, говорячи про збереження контексту користувача в кожному / багатьох контролерах, ви, можливо, не будете раді слухати зміни входу у всіх з них, і можете віддати перевагу прослуховуванню лише у найвищому контролері входу, а потім додаючи інші контролери, що знають про вхід, як дочірні / вбудовані контролери цього. Таким чином, дочірній контролер зможе побачити успадковані батьківські властивості $ scope, такі як ваш контекст користувача.