Есть страничка, в правой части есть меню:
- Админ
Настройки
Пользователи
+ Счета
+ Товары
В меню может быть раскрыт всего один элемент. Все это работает. Не могу придумать как поймать обновление и восстановить.
На элемент "Админ" добавлял ng-click="Click("nbAdmin")" который в контролере NavigationController сохранял значение. А вот как и в какой момент восстановить?
Кусочек этого меню:
<nav class="navbar-default navbar-static-side" role="navigation" ng-controller="NavigationController">
<div class="sidebar-collapse">
<ul side-navigation class="nav metismenu" id="side-menu">
<li class="nav-header">
<div class="logo-element">
</div>
</li>
<li>
<a id="nbAdmin"><i class=" fa fa-sitemap"></i> <span class="nav-label">Админ</span><span class="fa arrow"></span></a>
<ul class="nav nav-second-level collapse">
<li>
<a id="nbStaticDicts" ui-sref="staticDictionaries">Словари 1</a>
</li>
</ul>
<ul class="nav nav-second-level collapse">
<li>
<a ui-sref="staticDictionaries">Словари 2</a>
</li>
</ul>
</li>
</ul>
</div>
</nav>
Потом на этой странице в верхнем меню пользователь меняет язык приложения. По нажатию на иконку языка выполняется:
$scope.onLanguageChange = function (id) {
$http.post('/Shared/ChangeLanguage', { Id: id }).
then(function (response) {
$rootScope.$broadcast('onLayoutRefresh');
}, function (response) {
$scope.error = "ERROR_TO_DO";
});
}
Событие ловиться в главном контроллере и вызывает обновление страницы:
$scope.$on('onLayoutRefresh', function (event, args) {
$scope.NavigationUrl = "/Shared/Navigation?Ver=" + version();
$scope.TopNavbar = "/Shared/TopNavbar?Ver=" + version();
$scope.Footer = "/Shared/Footer?Ver=" + version();
var versionIndex = $state.current.templateUrl.indexOf("?Ver=");
if (versionIndex > 0) {
$state.current.templateUrl = $state.current.templateUrl.substring(0, versionIndex + 5);
$state.current.templateUrl += version();
}
$state.go($state.current, $stateParams, { reload: true, inherit: false });
});