Как работать с вложенными контроллерами в 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-роутера. Но я хочу знать, разрешимо ли это без использования еще одного модуля.

0 ответов

Другие вопросы по тегам