Как работать с вложенными контроллерами в Angular.js
У меня есть контроллер, который имеет дело с панелью навигации (пользовательский персонал и т. Д.), Которая оборачивает все другие контроллеры в моем коде.
<div class="container" ng-controller="wrapCtrl">
... navbar...
<div ng-view></div>
</div>
По сути, я хочу держать панель навигации наверху в скрипте, и она будет содержать ссылки на представления и обрабатывать некоторые пользовательские функции. Это доставило мне много хлопот, так как все остальное (логин, панель инструментов) и т. Д. Имеют свои контроллеры. Обновление панели навигации в синхронизации с другими контроллерами довольно проблематично. Сейчас я борюсь с моей функцией выхода из системы, которая обрабатывается в wrapCtrl. Функция выхода из системы просто удаляет токены и перенаправляет пользователя на страницу входа с помощью $location.path('/login'). Дело в том, что когда смена местоположения происходит в родительском контроллере (будучи wrapCtrl), дочерний контроллер (который является контроллером панели мониторинга) повторно инициализируется перед фактическим перенаправлением. Поскольку пользователь вышел из системы во время изменения местоположения, эта повторная инициализация приводит к сбою всех функций в контроллере панели мониторинга. Я не думаю, что это необходимо, но я получаю пламя, если я не делаю этого, так вот функция выхода из системы
$scope.logout = function logout() {
if (AuthenticationService.isLogged) {
localStorageService.remove('token');
UserInfoService.setUsrName("");
$location.path("/login");
}
}
Это должно быть так проблематично, как сейчас? Или это (вложенные контроллеры?) Не правильный способ справиться с моей ситуацией? Я в курсе UI-роутера. Но я хочу знать, разрешимо ли это без использования еще одного модуля.